{
  "schema_version": 1,
  "sdk_version": "74ff0dc",
  "sdk_abi_version": 2026061501,
  "supported_builds": {
    "en": {
      "source_game": "gamefiles/pcdogs_en.exe",
      "source_game_sha256": "765f43e3853d4f8ad42164074ff20c6ff35099b1ecb2f89fe5981dfc2eb1131f"
    },
    "eu": {
      "source_game": "gamefiles/pcdogs_eu.exe",
      "source_game_sha256": "c1aecfc41c2ecb8d9aab9592a113b3c672620509b86d91fbfd9ed2f67fa60a77"
    },
    "sc": {
      "source_game": "gamefiles/pcdogs_sc.exe",
      "source_game_sha256": "4ad94984976bdab0fcd1b184911279f0ed76b87c3ddef55412d10b0ce46f4351"
    }
  },
  "counts": {
    "functions": 708,
    "data_symbols": 982,
    "types": 266,
    "signatures": 33,
    "structs": 248,
    "function_xrefs": 0,
    "data_xrefs": 1005,
    "resolved_addresses": 4987,
    "function_call_xrefs": 5599,
    "unresolved": 0
  },
  "symbols": {
    "Actor_AddToCollisionList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4435456,
            "rva": 241152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4440528,
            "rva": 246224,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 850,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4440496,
            "rva": 246192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 850,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8B 0D ?? ?? ?? ?? 89 08 A3",
          "match_offset": 0
        },
        "docs": "Prepends actor to Actor_CollisionListHead using Actor_State.list_next for actor-to-actor collision processing.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 486,
          "symbol_index": 486,
          "accessor": "DTTR_PCDOGS_F_Actor_AddToCollisionList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_ADD_TO_COLLISION_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_ADD_TO_COLLISION_LIST"
        }
      }
    },
    "Actor_AnimationComponentState": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "animation_step",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "component_counts",
            "offset": 2,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Actor_AnimationComponentState"
        }
      }
    },
    "Actor_ApplyEntitySlotFlags": {
      "function": {
        "analysis": {
          "en": {
            "address": 4213088,
            "rva": 18784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 396,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4213536,
            "rva": 19232,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 396,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4213536,
            "rva": 19232,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 396,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 56 85 C0 0F 84 ??",
          "match_offset": 0
        },
        "docs": "Applies current-level entity-slot flags and state to an actor's collision-state bytes and behavior_flags.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 61,
          "symbol_index": 61,
          "accessor": "DTTR_PCDOGS_F_Actor_ApplyEntitySlotFlags",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_APPLY_ENTITY_SLOT_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_APPLY_ENTITY_SLOT_FLAGS"
        }
      }
    },
    "Actor_ApplySplineMovement": {
      "function": {
        "analysis": {
          "en": {
            "address": 4256624,
            "rva": 62320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalVelocity"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4257104,
            "rva": 62800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalVelocity"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4257104,
            "rva": 62800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalVelocity"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "spline_track",
              "type": "Animation_SplineChannel*"
            },
            {
              "name": "velocity",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "45 F4 8B 42 04 C1 E8 ??",
          "match_offset": -44
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 117,
          "symbol_index": 117,
          "accessor": "DTTR_PCDOGS_F_Actor_ApplySplineMovement",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_APPLY_SPLINE_MOVEMENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_APPLY_SPLINE_MOVEMENT"
        }
      }
    },
    "Actor_ApplyVerticalMovement": {
      "function": {
        "analysis": {
          "en": {
            "address": 4469552,
            "rva": 275248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalVelocity"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementCommands"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4476768,
            "rva": 282464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalVelocity"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementCommands"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4476704,
            "rva": 282400,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalVelocity"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementCommands"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "74 ?? F7 D8 50 51 E8 ??",
          "match_offset": -29
        },
        "docs": "Vertical movement callback for actor runtime physics/movement state; return is native movement status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 607,
          "symbol_index": 607,
          "accessor": "DTTR_PCDOGS_F_Actor_ApplyVerticalMovement",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_APPLY_VERTICAL_MOVEMENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_APPLY_VERTICAL_MOVEMENT"
        }
      }
    },
    "Actor_ApplyVerticalVelocity": {
      "function": {
        "analysis": {
          "en": {
            "address": 4256288,
            "rva": 61984,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4256768,
            "rva": 62464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4256768,
            "rva": 62464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "velocity",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "7C ?? 10 57 50 56 E8 ??",
          "match_offset": -49
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 116,
          "symbol_index": 116,
          "accessor": "DTTR_PCDOGS_F_Actor_ApplyVerticalVelocity",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_APPLY_VERTICAL_VELOCITY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_APPLY_VERTICAL_VELOCITY"
        }
      }
    },
    "Actor_AttachToParent": {
      "function": {
        "analysis": {
          "en": {
            "address": 4434528,
            "rva": 240224,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_FindNearestAttachPoint"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 677,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4439600,
            "rva": 245296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_FindNearestAttachPoint"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 677,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4439568,
            "rva": 245264,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_FindNearestAttachPoint"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 677,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "child_actor",
              "type": "Actor_State*"
            },
            {
              "name": "parent_actor",
              "type": "Actor_State*"
            },
            {
              "name": "attach_point",
              "type": "void*"
            },
            {
              "name": "attach_flags",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 55 56 57 8B 7C 24 14 57 E8 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 482,
          "symbol_index": 482,
          "accessor": "DTTR_PCDOGS_F_Actor_AttachToParent",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_ATTACH_TO_PARENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_ATTACH_TO_PARENT"
        }
      }
    },
    "Actor_BehaviorCallback": {
      "type": {
        "ret": "int32_t",
        "params": [
          {
            "type": "Actor_State*",
            "name": "actor",
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "function_type_alias",
        "docs": "Runtime behavior/movement callback slot signature used by Graphics_InitializeDispatchTables for behavior_target_actor and behavior_param0..2.",
        "calling_convention": "cdecl",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Actor_BehaviorCallback"
        }
      }
    },
    "Actor_CalculateRotation": {
      "function": {
        "analysis": {
          "en": {
            "address": 4211488,
            "rva": 17184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRotateActor"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4211936,
            "rva": 17632,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRotateActor"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4211936,
            "rva": 17632,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRotateActor"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "entity",
              "type": "Entity_State*"
            },
            {
              "name": "target_selector",
              "type": "int32_t",
              "docs": "Target selector: 1-based entity index or sentinel 0x8008/0x800A, not an actor id."
            },
            {
              "name": "angle_delta",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF FF 89 45 10 0F 84 ??",
          "match_offset": -77
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 56,
          "symbol_index": 56,
          "accessor": "DTTR_PCDOGS_F_Actor_CalculateRotation",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_CALCULATE_ROTATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_CALCULATE_ROTATION"
        }
      }
    },
    "Actor_CheckAnimationComplete": {
      "function": {
        "analysis": {
          "en": {
            "address": 4252592,
            "rva": 58288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWaitForAnimation"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4253072,
            "rva": 58768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWaitForAnimation"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4253072,
            "rva": 58768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWaitForAnimation"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "anim_state",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 56 8B 74 24 0C 57 85 F6 0F 84 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 111,
          "symbol_index": 111,
          "accessor": "DTTR_PCDOGS_F_Actor_CheckAnimationComplete",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_CHECK_ANIMATION_COMPLETE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_CHECK_ANIMATION_COMPLETE"
        }
      }
    },
    "Actor_CheckAnimationTrigger": {
      "function": {
        "analysis": {
          "en": {
            "address": 4384784,
            "rva": 190480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4389792,
            "rva": 195488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4389760,
            "rva": 195456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "trigger_actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "74 ?? 8B D8 48 83 E9 ??",
          "match_offset": -64
        },
        "docs": "Returns whether triggerActor satisfies actor's animation/collision trigger conditions.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 406,
          "symbol_index": 406,
          "accessor": "DTTR_PCDOGS_F_Actor_CheckAnimationTrigger",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_CHECK_ANIMATION_TRIGGER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_CHECK_ANIMATION_TRIGGER"
        }
      }
    },
    "Actor_CheckCollisionConditions": {
      "function": {
        "analysis": {
          "en": {
            "address": 4416720,
            "rva": 222416,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CheckCollisionConditions_ConditionFlagMaskDispatchTable"
                },
                "instr_offset": 291,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CheckCollisionConditions_ConditionSubtypeDispatchTable"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CheckCollisionConditions_ConditionSubtypeIndexTable"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4421776,
            "rva": 227472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CheckCollisionConditions_ConditionFlagMaskDispatchTable"
                },
                "instr_offset": 291,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CheckCollisionConditions_ConditionSubtypeDispatchTable"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CheckCollisionConditions_ConditionSubtypeIndexTable"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4421744,
            "rva": 227440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CheckCollisionConditions_ConditionFlagMaskDispatchTable"
                },
                "instr_offset": 291,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CheckCollisionConditions_ConditionSubtypeDispatchTable"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CheckCollisionConditions_ConditionSubtypeIndexTable"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "other_actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Actor_CheckCollisionConditions_ConditionSubtypeDispatchTable"
            },
            "instr_offset": 39,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_CheckCollisionConditions_ConditionSubtypeIndexTable"
            },
            "instr_offset": 33,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_CheckCollisionConditions_ConditionFlagMaskDispatchTable"
            },
            "instr_offset": 291,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "24 9D ?? ?? ?? ?? A1 ??",
          "match_offset": -40
        },
        "docs": "Sentinel collision-depth condition check used by Actor_ProcessCollisionResponse when collision_depth is -1 and the other actor subtype requires condition checks. Dispatches by other_actor subtype fields and selector masks; native return values are 0 or -1 sentinel results.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 446,
          "symbol_index": 446,
          "accessor": "DTTR_PCDOGS_F_Actor_CheckCollisionConditions",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_CHECK_COLLISION_CONDITIONS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_CHECK_COLLISION_CONDITIONS"
        }
      }
    },
    "Actor_CheckCollisionConditions_ConditionFlagMaskDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4417200,
            "rva": 222896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 291,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4422256,
            "rva": 227952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 291,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4422224,
            "rva": 227920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 291,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_CheckCollisionConditions"
            },
            "instr_offset": 291,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Actor_CheckCollisionConditions",
          "instr_offset": 291,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Eight-entry uint32_t jump table used by Actor_CheckCollisionConditions to test selector values 2..9 against masks 0x10,0x20,0x40,0x80,1,2,4,8.",
        "sdk": {
          "id": 55,
          "symbol_index": 55,
          "accessor": "DTTR_PCDOGS_D_Actor_CheckCollisionConditions_ConditionFlagMaskDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_CHECK_COLLISION_CONDITIONS_CONDITION_FLAG_MASK_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_CHECK_COLLISION_CONDITIONS_CONDITION_FLAG_MASK_DISPATCH_TABLE"
        }
      }
    },
    "Actor_CheckCollisionConditions_ConditionSubtypeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4417172,
            "rva": 222868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4422228,
            "rva": 227924,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4422196,
            "rva": 227892,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_CheckCollisionConditions"
            },
            "instr_offset": 39,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Actor_CheckCollisionConditions",
          "instr_offset": 39,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Four-entry uint32_t jump table used by Actor_CheckCollisionConditions after remapping collision subtype values 0x0D..0x17.",
        "sdk": {
          "id": 53,
          "symbol_index": 53,
          "accessor": "DTTR_PCDOGS_D_Actor_CheckCollisionConditions_ConditionSubtypeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_CHECK_COLLISION_CONDITIONS_CONDITION_SUBTYPE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_CHECK_COLLISION_CONDITIONS_CONDITION_SUBTYPE_DISPATCH_TABLE"
        }
      }
    },
    "Actor_CheckCollisionConditions_ConditionSubtypeIndexTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4417188,
            "rva": 222884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4422244,
            "rva": 227940,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4422212,
            "rva": 227908,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_CheckCollisionConditions"
            },
            "instr_offset": 33,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Actor_CheckCollisionConditions",
          "instr_offset": 33,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Uint8_t lookup table mapping collision subtype values 0x0D..0x17 onto collision_condition_subtype_dispatch_table slots; max slot is 3.",
        "sdk": {
          "id": 54,
          "symbol_index": 54,
          "accessor": "DTTR_PCDOGS_D_Actor_CheckCollisionConditions_ConditionSubtypeIndexTable",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_CHECK_COLLISION_CONDITIONS_CONDITION_SUBTYPE_INDEX_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_CHECK_COLLISION_CONDITIONS_CONDITION_SUBTYPE_INDEX_TABLE"
        }
      }
    },
    "Actor_CheckCollisionType": {
      "function": {
        "analysis": {
          "en": {
            "address": 4384512,
            "rva": 190208,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CheckActorCollisionTypeAdapter"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4389520,
            "rva": 195216,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CheckActorCollisionTypeAdapter"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4389488,
            "rva": 195184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CheckActorCollisionTypeAdapter"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "component_def",
              "type": "Component_Definition*"
            },
            {
              "name": "other_actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 54 24 04 8B 44 24 0C 3B D0 0F 84 ??",
          "match_offset": 0
        },
        "docs": "Checks whether actor/component collision metadata can collide with otherActor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 405,
          "symbol_index": 405,
          "accessor": "DTTR_PCDOGS_F_Actor_CheckCollisionType",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_CHECK_COLLISION_TYPE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_CHECK_COLLISION_TYPE"
        }
      }
    },
    "Actor_CheckSavedActiveActorCameraDistance": {
      "function": {
        "analysis": {
          "en": {
            "address": 4198400,
            "rva": 4096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 85 C0 75 ?? 33 C0 C3 8B 15 ??",
          "match_offset": 0
        },
        "docs": "Returns TRUE when actor is non-null and the native pause/menu camera-distance gate allows processing. The distance scalar is computed from the saved active-actor world_render_pos snapshot captured by Script_OpPauseToggle and the current Graphics_ListState eye position; the actor parameter only gates null handling. Mode index 0 rejects scalar 0x8381; mode index 0x11 rejects scalars in the open range 0x30d40..0x493e0. EU/SC builds carry a rewritten, larger variant of this gate that this pattern does not match.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 32,
          "symbol_index": 32,
          "accessor": "DTTR_PCDOGS_F_Actor_CheckSavedActiveActorCameraDistance",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_CHECK_SAVED_ACTIVE_ACTOR_CAMERA_DISTANCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_CHECK_SAVED_ACTIVE_ACTOR_CAMERA_DISTANCE"
        }
      },
      "signature": {
        "analysis": {
          "en": {
            "address": 4198400,
            "rva": 4096,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "8B 44 24 04 85 C0 75 ?? 33 C0 C3 8B 15 ??"
      }
    },
    "Actor_ClearReferences": {
      "function": {
        "analysis": {
          "en": {
            "address": 4433712,
            "rva": 239408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 462,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4438784,
            "rva": 244480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 472,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4438752,
            "rva": 244448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 472,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 35 ?? ?? ?? ?? 85 F6 74 ?? 57 C7 05 ?? ?? A8",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 479,
          "symbol_index": 479,
          "accessor": "DTTR_PCDOGS_F_Actor_ClearReferences",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_CLEAR_REFERENCES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_CLEAR_REFERENCES"
        }
      }
    },
    "Actor_CloneTemplateWithTemplateRelativeFixups": {
      "function": {
        "analysis": {
          "en": {
            "address": 4433776,
            "rva": 239472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResetState"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_CloneActorFromTemplate"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1321,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4438848,
            "rva": 244544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResetState"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_CloneActorFromTemplate"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1324,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4438816,
            "rva": 244512,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResetState"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_CloneActorFromTemplate"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1324,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "source_actor_template",
              "type": "Actor_State*",
              "docs": "Source actor/template whose pointer fields are relative to the cloned actor allocation; fixed-up package or borrowed runtime pointers are unsafe."
            },
            {
              "name": "actor_list_head",
              "type": "Actor_State**",
              "docs": "Optional linked-list head; when non-null the instantiated actor is pushed onto this list."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C3 F6 43 65 08 0F 85 ??",
          "match_offset": -22
        },
        "docs": "Allocates/copies an Actor_State template, then rewrites selected pointer fields as cloned_actor + source_field - source_actor. This template-relative clone path leaves external package pointers subject to source lifetime.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 480,
          "symbol_index": 480,
          "accessor": "DTTR_PCDOGS_F_Actor_CloneTemplateWithTemplateRelativeFixups",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_CLONE_TEMPLATE_WITH_TEMPLATE_RELATIVE_FIXUPS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_CLONE_TEMPLATE_WITH_TEMPLATE_RELATIVE_FIXUPS"
        }
      }
    },
    "Actor_CollisionListHead": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507100,
            "rva": 2312796,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 467,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 236904,
            "rva": -3957400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 467,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 236920,
            "rva": -3957384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 467,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 467,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Head of the actor-to-actor collision-processing linked list. Actor_AddToCollisionList prepends Actor_State records here via list_next; pause/entity update paths walk and prune it.",
        "sdk": {
          "id": 814,
          "symbol_index": 814,
          "accessor": "DTTR_PCDOGS_D_Actor_CollisionListHead",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_COLLISION_LIST_HEAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_COLLISION_LIST_HEAD"
        }
      }
    },
    "Actor_ContactSlot": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "distance",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "target",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "One actor-contact tracking slot: squared/scored distance plus the contacted actor.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Actor_ContactSlot"
        }
      }
    },
    "Actor_CopyEntityDefaultsToRecord": {
      "function": {
        "analysis": {
          "en": {
            "address": 4217008,
            "rva": 22704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4217456,
            "rva": 23152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4217456,
            "rva": 23152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "PKG_ActorRecord*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "68 01 00 00 20 0F 85 ??",
          "match_offset": -13
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 66,
          "symbol_index": 66,
          "accessor": "DTTR_PCDOGS_F_Actor_CopyEntityDefaultsToRecord",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_COPY_ENTITY_DEFAULTS_TO_RECORD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_COPY_ENTITY_DEFAULTS_TO_RECORD"
        }
      }
    },
    "Actor_DefaultUpdateCallback": {
      "type": {
        "ret": "int32_t",
        "params": [],
        "unstable": true,
        "kind": "function_type_alias",
        "docs": "Default actor update callback signature, with no arguments.",
        "calling_convention": "cdecl",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Actor_DefaultUpdateCallback"
        }
      }
    },
    "Actor_DefaultUpdateCallbackSlot": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832700,
            "rva": 638396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 6038,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841604,
            "rva": 647300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 6038,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841588,
            "rva": 647284,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 6038,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_InitializeDispatchTables"
            },
            "instr_offset": 29,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectAndResolve3DCollision"
            },
            "instr_offset": 6038,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_DefaultUpdateCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_InitializeDispatchTables",
          "instr_offset": 29,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Slot 0 of the sparse collision-state callback vector, initialized to Actor_HandleDefaultUpdate by Graphics_InitializeDispatchTables.",
        "sdk": {
          "id": 639,
          "symbol_index": 639,
          "accessor": "DTTR_PCDOGS_D_Actor_DefaultUpdateCallbackSlot",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_DEFAULT_UPDATE_CALLBACK_SLOT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_DEFAULT_UPDATE_CALLBACK_SLOT"
        }
      }
    },
    "Actor_Destroy": {
      "function": {
        "analysis": {
          "en": {
            "address": 4434480,
            "rva": 240176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4439552,
            "rva": 245248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4439520,
            "rva": 245216,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "08 88 41 65 C3 51 E8 ??",
          "match_offset": -21
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 11,
          "entry_patch_size": 11
        },
        "sdk": {
          "id": 481,
          "symbol_index": 481,
          "accessor": "DTTR_PCDOGS_F_Actor_Destroy",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_DESTROY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_DESTROY"
        }
      }
    },
    "Actor_DestroyAll": {
      "function": {
        "analysis": {
          "en": {
            "address": 4271888,
            "rva": 77584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4272368,
            "rva": 78064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4272368,
            "rva": 78064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 85",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 178,
          "symbol_index": 178,
          "accessor": "DTTR_PCDOGS_F_Actor_DestroyAll",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_DESTROY_ALL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_DESTROY_ALL"
        }
      }
    },
    "Actor_FindNearestAttachPoint": {
      "function": {
        "analysis": {
          "en": {
            "address": 4434768,
            "rva": 240464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4439840,
            "rva": 245536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4439808,
            "rva": 245504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void**",
          "params": [
            {
              "name": "parent_actor",
              "type": "Actor_State*"
            },
            {
              "name": "child_actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "7D ?? 89 45 F8 0F 84 ??",
          "match_offset": -24
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 483,
          "symbol_index": 483,
          "accessor": "DTTR_PCDOGS_F_Actor_FindNearestAttachPoint",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_FIND_NEAREST_ATTACH_POINT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_FIND_NEAREST_ATTACH_POINT"
        }
      }
    },
    "Actor_FollowAttachedMovement": {
      "function": {
        "analysis": {
          "en": {
            "address": 4469600,
            "rva": 275296,
            "image_base": 4194304
          },
          "eu": {
            "address": 4476816,
            "rva": 282512,
            "image_base": 4194304
          },
          "sc": {
            "address": 4476752,
            "rva": 282448,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "F6 C4 04 75 ?? 51 E8 ??",
          "match_offset": -24
        },
        "docs": "Attached/follow movement callback for actors whose runtime transform follows another actor/component context.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 608,
          "symbol_index": 608,
          "accessor": "DTTR_PCDOGS_F_Actor_FollowAttachedMovement",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_FOLLOW_ATTACHED_MOVEMENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_FOLLOW_ATTACHED_MOVEMENT"
        }
      }
    },
    "Actor_GetStateIndex": {
      "function": {
        "analysis": {
          "en": {
            "address": 4209888,
            "rva": 15584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundBlockOrWait"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundIndex"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpStopSound"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4210336,
            "rva": 16032,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundBlockOrWait"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundIndex"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpStopSound"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4210336,
            "rva": 16032,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundBlockOrWait"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundIndex"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpStopSound"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "state_base",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 85 C0 74 ?? 66 8B 40 0C 66 85 C0 7C ?? 8B 4C 24 08 0F BF C0 8D 44 08 9C C3 83 C8 FF C3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 8B 0D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 48,
          "symbol_index": 48,
          "accessor": "DTTR_PCDOGS_F_Actor_GetStateIndex",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_GET_STATE_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_GET_STATE_INDEX"
        }
      }
    },
    "Actor_HandleCollisionResponse": {
      "function": {
        "analysis": {
          "en": {
            "address": 4417232,
            "rva": 222928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_HandleCollisionResponse_SubtypeDispatchTable"
                },
                "instr_offset": 34,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 987,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4422288,
            "rva": 227984,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_HandleCollisionResponse_SubtypeDispatchTable"
                },
                "instr_offset": 34,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 987,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4422256,
            "rva": 227952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_HandleCollisionResponse_SubtypeDispatchTable"
                },
                "instr_offset": 34,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 987,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "other_actor",
              "type": "Actor_State*"
            },
            {
              "name": "collision_poly",
              "type": "Collision_Polygon*"
            },
            {
              "name": "collision_slot",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Actor_HandleCollisionResponse_SubtypeDispatchTable"
            },
            "instr_offset": 34,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 83 FF 06 0F 87 ??",
          "match_offset": -23
        },
        "docs": "Subtype collision-response helper called by Actor_ProcessCollisionResponse; it updates response vectors, normal fields, and selected actor record slots from the caller's Collision_Polygon pointer, selected collision slot, and actor record state.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 703,
          "symbol_index": 703,
          "accessor": "DTTR_PCDOGS_F_Actor_HandleCollisionResponse",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_HANDLE_COLLISION_RESPONSE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_HANDLE_COLLISION_RESPONSE"
        }
      }
    },
    "Actor_HandleCollisionResponse_SubtypeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4417620,
            "rva": 223316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_HandleCollisionResponse"
                },
                "instr_offset": 34,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4422676,
            "rva": 228372,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_HandleCollisionResponse"
                },
                "instr_offset": 34,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4422644,
            "rva": 228340,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_HandleCollisionResponse"
                },
                "instr_offset": 34,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_HandleCollisionResponse"
            },
            "instr_offset": 34,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Actor_HandleCollisionResponse",
          "instr_offset": 34,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Seven-entry uint32_t jump table used by Actor_HandleCollisionResponse for collision subtype values 0x0D..0x13.",
        "sdk": {
          "id": 56,
          "symbol_index": 56,
          "accessor": "DTTR_PCDOGS_D_Actor_HandleCollisionResponse_SubtypeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_HANDLE_COLLISION_RESPONSE_SUBTYPE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_HANDLE_COLLISION_RESPONSE_SUBTYPE_DISPATCH_TABLE"
        }
      }
    },
    "Actor_HandleDefaultUpdate": {
      "function": {
        "analysis": {
          "en": {
            "address": 4469536,
            "rva": 275232,
            "image_base": 4194304
          },
          "eu": {
            "address": 4476752,
            "rva": 282448,
            "image_base": 4194304
          },
          "sc": {
            "address": 4476688,
            "rva": 282384,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "33 C0 C3 90 90 90 90 90 90 90 90 90 90 90 90 90 8B 4C 24 04 8B 81 88 00 00 00 A9 00 10 08 00 74 ?? A9 00 00 02 00 0F BF 81 B8 00 00 00 74 ?? F7 D8 50 51 E8 ??",
          "match_offset": 0
        },
        "docs": "Default no-op actor update callback installed into actor_default_update_handler by Graphics_InitializeDispatchTables; returns 0.",
        "hook": {
          "kind": "hotpatch",
          "patch_size": 2,
          "entry_patch_size": 2
        },
        "sdk": {
          "id": 606,
          "symbol_index": 606,
          "accessor": "DTTR_PCDOGS_F_Actor_HandleDefaultUpdate",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_HANDLE_DEFAULT_UPDATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_HANDLE_DEFAULT_UPDATE"
        }
      }
    },
    "Actor_InitializeDirectionTables": {
      "function": {
        "analysis": {
          "en": {
            "address": 4394240,
            "rva": 199936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_InitializeDirectionTables_CollisionPlanePointers"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_InitializeDirectionTables_CollisionResponsePlanes"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_InitializeDirectionTables_VertexIndexRemapTable1"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4399248,
            "rva": 204944,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_InitializeDirectionTables_CollisionPlanePointers"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_InitializeDirectionTables_CollisionResponsePlanes"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_InitializeDirectionTables_VertexIndexRemapTable1"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4399216,
            "rva": 204912,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_InitializeDirectionTables_CollisionPlanePointers"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_InitializeDirectionTables_CollisionResponsePlanes"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_InitializeDirectionTables_VertexIndexRemapTable1"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Actor_InitializeDirectionTables_VertexIndexRemapTable1"
            },
            "instr_offset": 10,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_InitializeDirectionTables_CollisionPlanePointers"
            },
            "instr_offset": 5,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_InitializeDirectionTables_CollisionResponsePlanes"
            },
            "instr_offset": 15,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 55 56 33 DB B9 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 428,
          "symbol_index": 428,
          "accessor": "DTTR_PCDOGS_F_Actor_InitializeDirectionTables",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_INITIALIZE_DIRECTION_TABLES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_INITIALIZE_DIRECTION_TABLES"
        }
      }
    },
    "Actor_InitializeDirectionTables_CollisionPlanePointers": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832476,
            "rva": 638172,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_InitializeDirectionTables"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841380,
            "rva": 647076,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_InitializeDirectionTables"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841364,
            "rva": 647060,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_InitializeDirectionTables"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_InitializeDirectionTables"
            },
            "instr_offset": 5,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 631,
          "symbol_index": 631,
          "accessor": "DTTR_PCDOGS_D_Actor_InitializeDirectionTables_CollisionPlanePointers",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_INITIALIZE_DIRECTION_TABLES_COLLISION_PLANE_POINTERS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_INITIALIZE_DIRECTION_TABLES_COLLISION_PLANE_POINTERS"
        }
      }
    },
    "Actor_InitializeDirectionTables_CollisionResponsePlanes": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832632,
            "rva": 638328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_InitializeDirectionTables"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841536,
            "rva": 647232,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_InitializeDirectionTables"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841520,
            "rva": 647216,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_InitializeDirectionTables"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_InitializeDirectionTables"
            },
            "instr_offset": 15,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 637,
          "symbol_index": 637,
          "accessor": "DTTR_PCDOGS_D_Actor_InitializeDirectionTables_CollisionResponsePlanes",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_INITIALIZE_DIRECTION_TABLES_COLLISION_RESPONSE_PLANES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_INITIALIZE_DIRECTION_TABLES_COLLISION_RESPONSE_PLANES"
        }
      }
    },
    "Actor_InitializeDirectionTables_VertexIndexRemapTable1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525989,
            "rva": 331685,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_InitializeDirectionTables"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534173,
            "rva": 339869,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_InitializeDirectionTables"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534173,
            "rva": 339869,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_InitializeDirectionTables"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_InitializeDirectionTables"
            },
            "instr_offset": 10,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 237,
          "symbol_index": 237,
          "accessor": "DTTR_PCDOGS_D_Actor_InitializeDirectionTables_VertexIndexRemapTable1",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_INITIALIZE_DIRECTION_TABLES_VERTEX_INDEX_REMAP_TABLE1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_INITIALIZE_DIRECTION_TABLES_VERTEX_INDEX_REMAP_TABLE1"
        }
      }
    },
    "Actor_MoveToTarget": {
      "function": {
        "analysis": {
          "en": {
            "address": 4211968,
            "rva": 17664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 255,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_StartTransition"
                },
                "instr_offset": 338,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1702,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ResetVelocityAndSnap"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1802,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 259,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4212416,
            "rva": 18112,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 255,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_StartTransition"
                },
                "instr_offset": 338,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1705,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ResetVelocityAndSnap"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1802,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 259,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4212416,
            "rva": 18112,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 255,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_StartTransition"
                },
                "instr_offset": 338,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1705,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ResetVelocityAndSnap"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1802,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 259,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "target_pos",
              "type": "Math_Vec3I32*"
            },
            {
              "name": "target_angle",
              "type": "int16_t"
            },
            {
              "name": "transition_speed",
              "type": "int32_t"
            },
            {
              "name": "duration",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 84 C0 7E ?? 56 E8 ??",
          "match_offset": -23
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 58,
          "symbol_index": 58,
          "accessor": "DTTR_PCDOGS_F_Actor_MoveToTarget",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_MOVE_TO_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_MOVE_TO_TARGET"
        }
      }
    },
    "Actor_ProcessCollisionResponse": {
      "function": {
        "analysis": {
          "en": {
            "address": 4240208,
            "rva": 45904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessCollisionResponse_NodeTypeDispatchTable"
                },
                "instr_offset": 335,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_HandleCollisionResponse"
                },
                "instr_offset": 987,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 1021,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerCollisionSound"
                },
                "instr_offset": 1088,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CheckActorCollisionTypeAdapter"
                },
                "instr_offset": 240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 410,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CheckGroundSlopeDirection"
                },
                "instr_offset": 759,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4240688,
            "rva": 46384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessCollisionResponse_NodeTypeDispatchTable"
                },
                "instr_offset": 335,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_HandleCollisionResponse"
                },
                "instr_offset": 987,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 1021,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerCollisionSound"
                },
                "instr_offset": 1088,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CheckActorCollisionTypeAdapter"
                },
                "instr_offset": 240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 410,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CheckGroundSlopeDirection"
                },
                "instr_offset": 759,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4240688,
            "rva": 46384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessCollisionResponse_NodeTypeDispatchTable"
                },
                "instr_offset": 335,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionConditions"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_HandleCollisionResponse"
                },
                "instr_offset": 987,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 1021,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerCollisionSound"
                },
                "instr_offset": 1088,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CheckActorCollisionTypeAdapter"
                },
                "instr_offset": 240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 410,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CheckGroundSlopeDirection"
                },
                "instr_offset": 759,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "other_actor",
              "type": "Actor_State*"
            },
            {
              "name": "collision_poly",
              "type": "Collision_Polygon*"
            },
            {
              "name": "collision_depth",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Actor_ProcessCollisionResponse_NodeTypeDispatchTable"
            },
            "instr_offset": 335,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "24 34 83 FF FE 0F 85 ??",
          "match_offset": -19
        },
        "docs": "Actor-vs-actor collision response dispatcher. It receives a contextual Collision_Polygon from the collision query, handles sentinel collision_depth values, dispatches collision callback slots, and mutates actor response state.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 95,
          "symbol_index": 95,
          "accessor": "DTTR_PCDOGS_F_Actor_ProcessCollisionResponse",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_PROCESS_COLLISION_RESPONSE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_PROCESS_COLLISION_RESPONSE"
        }
      }
    },
    "Actor_ProcessCollisionResponse_NodeTypeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4241356,
            "rva": 47052,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 335,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4241836,
            "rva": 47532,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 335,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4241836,
            "rva": 47532,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 335,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_ProcessCollisionResponse"
            },
            "instr_offset": 335,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Actor_ProcessCollisionResponse",
          "instr_offset": 335,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Five-entry uint32_t jump table used by Actor_ProcessCollisionResponse for collided actor/node type values 0..4.",
        "sdk": {
          "id": 23,
          "symbol_index": 23,
          "accessor": "DTTR_PCDOGS_D_Actor_ProcessCollisionResponse_NodeTypeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_PROCESS_COLLISION_RESPONSE_NODE_TYPE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_PROCESS_COLLISION_RESPONSE_NODE_TYPE_DISPATCH_TABLE"
        }
      }
    },
    "Actor_ProcessHazardsAndDamage": {
      "function": {
        "analysis": {
          "en": {
            "address": 4422640,
            "rva": 228336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckAnimationTrigger"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CopyEntityDefaultsToRecord"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_GetSpeedRange"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_HandleDamageResponse"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_HandleCollection"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4427696,
            "rva": 233392,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckAnimationTrigger"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CopyEntityDefaultsToRecord"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_GetSpeedRange"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_HandleDamageResponse"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 483,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4427664,
            "rva": 233360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckAnimationTrigger"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CopyEntityDefaultsToRecord"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_GetSpeedRange"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_HandleDamageResponse"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 483,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "physics_state",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "75 ?? 8B 7D 08 57 E8 ??",
          "match_offset": -29
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 452,
          "symbol_index": 452,
          "accessor": "DTTR_PCDOGS_F_Actor_ProcessHazardsAndDamage",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_PROCESS_HAZARDS_AND_DAMAGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_PROCESS_HAZARDS_AND_DAMAGE"
        }
      }
    },
    "Actor_ProcessMovementBehavior": {
      "function": {
        "analysis": {
          "en": {
            "address": 4470400,
            "rva": 276096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ValidateDirectionAndProcessInput"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_GetVariableById"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_GetVariableById"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_SetVariableById"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4477616,
            "rva": 283312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ValidateDirectionAndProcessInput"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_GetVariableById"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_GetVariableById"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_SetVariableById"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4477552,
            "rva": 283248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ValidateDirectionAndProcessInput"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_GetVariableById"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_GetVariableById"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_SetVariableById"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? 8B 8E E0",
          "match_offset": -37
        },
        "docs": "Behavior/movement callback installed by Graphics_InitializeDispatchTables. Coordinates vertical movement, animation progress, and input-validation flow for the actor; the return is native movement behavior status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 610,
          "symbol_index": 610,
          "accessor": "DTTR_PCDOGS_F_Actor_ProcessMovementBehavior",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_PROCESS_MOVEMENT_BEHAVIOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_PROCESS_MOVEMENT_BEHAVIOR"
        }
      }
    },
    "Actor_ProcessMovementCommands": {
      "function": {
        "analysis": {
          "en": {
            "address": 4469728,
            "rva": 275424,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessMovementCommands_CommandOpcodeDispatchTable"
                },
                "instr_offset": 79,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ValidateDirectionAndProcessInput"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4476944,
            "rva": 282640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessMovementCommands_CommandOpcodeDispatchTable"
                },
                "instr_offset": 79,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ValidateDirectionAndProcessInput"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4476880,
            "rva": 282576,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessMovementCommands_CommandOpcodeDispatchTable"
                },
                "instr_offset": 79,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyVerticalMovement"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ValidateDirectionAndProcessInput"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Actor_ProcessMovementCommands_CommandOpcodeDispatchTable"
            },
            "instr_offset": 79,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 FF F7 F7 FF E8 ??",
          "match_offset": -12
        },
        "docs": "Processes actor-local movement command opcodes through the movement_command_opcode_dispatch_table. Per-opcode details and enum names stay internal.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 609,
          "symbol_index": 609,
          "accessor": "DTTR_PCDOGS_F_Actor_ProcessMovementCommands",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_PROCESS_MOVEMENT_COMMANDS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_PROCESS_MOVEMENT_COMMANDS"
        }
      }
    },
    "Actor_ProcessMovementCommands_CommandOpcodeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4470356,
            "rva": 276052,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementCommands"
                },
                "instr_offset": 79,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4477572,
            "rva": 283268,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementCommands"
                },
                "instr_offset": 79,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4477508,
            "rva": 283204,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementCommands"
                },
                "instr_offset": 79,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_ProcessMovementCommands"
            },
            "instr_offset": 79,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Actor_ProcessMovementCommands",
          "instr_offset": 79,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Eleven-entry uint32_t jump table used by Actor_ProcessMovementCommands for movement command opcodes 0..10; kept as read-only scalar/base table metadata.",
        "sdk": {
          "id": 65,
          "symbol_index": 65,
          "accessor": "DTTR_PCDOGS_D_Actor_ProcessMovementCommands_CommandOpcodeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_PROCESS_MOVEMENT_COMMANDS_COMMAND_OPCODE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_PROCESS_MOVEMENT_COMMANDS_COMMAND_OPCODE_DISPATCH_TABLE"
        }
      }
    },
    "Actor_ProcessPlayerBehavior": {
      "function": {
        "analysis": {
          "en": {
            "address": 4235776,
            "rva": 41472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessPlayerBehavior_AIState0"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessPlayerBehavior_RenderingDepthMode"
                },
                "instr_offset": 2158,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessPlayerBehavior_StateDispatchTable"
                },
                "instr_offset": 623,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 1702,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 588,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SetAlphaFade"
                },
                "instr_offset": 1246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1743,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 855,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 1075,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 2089,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 2120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 1655,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 1517,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 575,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_CheckBonusUnlock"
                },
                "instr_offset": 1731,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 696,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 1602,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_ApplyGroundReaction"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 1203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 424,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 882,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 942,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4236240,
            "rva": 41936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessPlayerBehavior_AIState0"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessPlayerBehavior_RenderingDepthMode"
                },
                "instr_offset": 2158,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessPlayerBehavior_StateDispatchTable"
                },
                "instr_offset": 623,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 1705,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 483,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SetAlphaFade"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1746,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 858,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 2092,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 2123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 937,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 1658,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 1520,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 578,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_CheckBonusUnlock"
                },
                "instr_offset": 1734,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 1605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_ApplyGroundReaction"
                },
                "instr_offset": 501,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 1206,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 945,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4236240,
            "rva": 41936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessPlayerBehavior_AIState0"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessPlayerBehavior_RenderingDepthMode"
                },
                "instr_offset": 2158,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessPlayerBehavior_StateDispatchTable"
                },
                "instr_offset": 623,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 1705,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 483,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SetAlphaFade"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1746,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 858,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 2092,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 2123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 937,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 1658,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 1520,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 578,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_CheckBonusUnlock"
                },
                "instr_offset": 1734,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 1605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_ApplyGroundReaction"
                },
                "instr_offset": 501,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 1206,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 945,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor being processed for player/AI behavior; state mutation depends on validating that this is the intended player."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Actor_ProcessPlayerBehavior_StateDispatchTable"
            },
            "instr_offset": 623,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_ProcessPlayerBehavior_AIState0"
            },
            "instr_offset": 2147,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_ProcessPlayerBehavior_RenderingDepthMode"
            },
            "instr_offset": 2158,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 1C 53 55 56 57 8B 7C 24 30 8B 0D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 91,
          "symbol_index": 91,
          "accessor": "DTTR_PCDOGS_F_Actor_ProcessPlayerBehavior",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_PROCESS_PLAYER_BEHAVIOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_PROCESS_PLAYER_BEHAVIOR"
        }
      }
    },
    "Actor_ProcessPlayerBehavior_AIState0": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831740,
            "rva": 23637436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 3164803444,
            "rva": 3160609140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2091061620,
            "rva": 2086867316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_ProcessPlayerBehavior"
            },
            "instr_offset": 2147,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 960,
          "symbol_index": 960,
          "accessor": "DTTR_PCDOGS_D_Actor_ProcessPlayerBehavior_AIState0",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_PROCESS_PLAYER_BEHAVIOR_AI_STATE0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_PROCESS_PLAYER_BEHAVIOR_AI_STATE0"
        }
      }
    },
    "Actor_ProcessPlayerBehavior_RenderingDepthMode": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831744,
            "rva": 23637440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2158,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 3222636800,
            "rva": 3218442496,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2158,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2148894976,
            "rva": 2144700672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2158,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_ProcessPlayerBehavior"
            },
            "instr_offset": 2158,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 961,
          "symbol_index": 961,
          "accessor": "DTTR_PCDOGS_D_Actor_ProcessPlayerBehavior_RenderingDepthMode",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_PROCESS_PLAYER_BEHAVIOR_RENDERING_DEPTH_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_PROCESS_PLAYER_BEHAVIOR_RENDERING_DEPTH_MODE"
        }
      }
    },
    "Actor_ProcessPlayerBehavior_StateDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4237948,
            "rva": 43644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 623,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1350903039,
            "rva": 1346708735,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 623,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1350903039,
            "rva": 1346708735,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 623,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_ProcessPlayerBehavior"
            },
            "instr_offset": 623,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Actor_ProcessPlayerBehavior",
          "instr_offset": 623,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Five-entry uint32_t jump table used by Actor_ProcessPlayerBehavior for player behavior state values 0..4.",
        "sdk": {
          "id": 22,
          "symbol_index": 22,
          "accessor": "DTTR_PCDOGS_D_Actor_ProcessPlayerBehavior_StateDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_PROCESS_PLAYER_BEHAVIOR_STATE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_PROCESS_PLAYER_BEHAVIOR_STATE_DISPATCH_TABLE"
        }
      }
    },
    "Actor_ProcessPuppyInteraction": {
      "function": {
        "analysis": {
          "en": {
            "address": 4241376,
            "rva": 47072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 1021,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4241856,
            "rva": 47552,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 1021,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4241856,
            "rva": 47552,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 1021,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "puppy_actor",
              "type": "Actor_State*"
            },
            {
              "name": "collision_poly",
              "type": "Collision_Polygon*"
            },
            {
              "name": "collision_depth",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "50 6A 67 89 7D F8 E8 ??",
          "match_offset": -56
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 96,
          "symbol_index": 96,
          "accessor": "DTTR_PCDOGS_F_Actor_ProcessPuppyInteraction",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_PROCESS_PUPPY_INTERACTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_PROCESS_PUPPY_INTERACTION"
        }
      }
    },
    "Actor_ProcessRendering": {
      "function": {
        "analysis": {
          "en": {
            "address": 4204784,
            "rva": 10480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessRendering_CurrentRenderActor"
                },
                "instr_offset": 8,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4205184,
            "rva": 10880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessRendering_CurrentRenderActor"
                },
                "instr_offset": 8,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4205184,
            "rva": 10880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_ProcessRendering_CurrentRenderActor"
                },
                "instr_offset": 8,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Actor_ProcessRendering_CurrentRenderActor"
            },
            "instr_offset": 8,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 56 8B 74 24 0C 57 56 89 35 ??",
          "match_offset": 0
        },
        "docs": "Renders one actor. Publishes actor in Actor_ProcessRendering_CurrentRenderActor for render helpers, updates animation/visibility, renders the actor scene-node tree, processes trail/mesh command flags, and clears render-scoped globals before return.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 43,
          "symbol_index": 43,
          "accessor": "DTTR_PCDOGS_F_Actor_ProcessRendering",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_PROCESS_RENDERING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_PROCESS_RENDERING"
        }
      }
    },
    "Actor_ProcessRendering_CurrentRenderActor": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831756,
            "rva": 23637452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 8,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843020,
            "rva": 23648716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 8,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27842444,
            "rva": 23648140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 8,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_ProcessRendering"
            },
            "instr_offset": 8,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_State*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Actor_ProcessRendering",
          "instr_offset": 8,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Render-scoped actor pointer published and cleared by Actor_ProcessRendering. Movement/collision hooks use DTTR_UtilGetActiveActor or current_level_data->Level_RuntimeData.entity_array->Entity_State.active_actor for current-player/current-entity authority.",
        "sdk": {
          "id": 965,
          "symbol_index": 965,
          "accessor": "DTTR_PCDOGS_D_Actor_ProcessRendering_CurrentRenderActor",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_PROCESS_RENDERING_CURRENT_RENDER_ACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_PROCESS_RENDERING_CURRENT_RENDER_ACTOR"
        }
      }
    },
    "Actor_ProcessSnapAndEntityUpdate": {
      "function": {
        "analysis": {
          "en": {
            "address": 4233584,
            "rva": 39280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4234048,
            "rva": 39744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4234048,
            "rva": 39744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 00 75 ?? 51 E8 ??",
          "match_offset": -51
        },
        "docs": "Snap/entity update callback used by movement/render dispatch paths.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 89,
          "symbol_index": 89,
          "accessor": "DTTR_PCDOGS_F_Actor_ProcessSnapAndEntityUpdate",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_PROCESS_SNAP_AND_ENTITY_UPDATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_PROCESS_SNAP_AND_ENTITY_UPDATE"
        }
      }
    },
    "Actor_PropID": {
      "type": {
        "values": [
          {
            "name": "PROP_RENDERY",
            "value": 0,
            "doc": null
          },
          {
            "name": "PROP_SPEED",
            "value": 1,
            "doc": null
          },
          {
            "name": "PROP_ROTATION",
            "value": 2,
            "doc": null
          },
          {
            "name": "PROP_PARENT",
            "value": 3,
            "doc": null
          },
          {
            "name": "PROP_PUSHXZ",
            "value": 4,
            "doc": null
          },
          {
            "name": "PROP_RESPONSEXZ",
            "value": 5,
            "doc": null
          },
          {
            "name": "PROP_LIVESPEED",
            "value": 6,
            "doc": null
          },
          {
            "name": "PROP_CAMERAXZ",
            "value": 7,
            "doc": null
          },
          {
            "name": "PROP_COLLRADIUS",
            "value": 8,
            "doc": null
          },
          {
            "name": "PROP_COLLHEIGHT",
            "value": 9,
            "doc": null
          },
          {
            "name": "PROP_TRACEMODE0",
            "value": 100,
            "doc": null
          },
          {
            "name": "PROP_TRACEMODE1",
            "value": 101,
            "doc": null
          },
          {
            "name": "PROP_TRACEMODE2",
            "value": 102,
            "doc": null
          },
          {
            "name": "PROP_TRACEMODE3",
            "value": 103,
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "enum",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Actor_PropID"
        }
      }
    },
    "Actor_ReleaseAttachment": {
      "function": {
        "analysis": {
          "en": {
            "address": 4212336,
            "rva": 18032,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 588,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 762,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4212784,
            "rva": 18480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4212784,
            "rva": 18480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "record",
              "type": "PKG_ActorRecord*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 8B 48 24 51 E8 ??",
          "match_offset": -9
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 59,
          "symbol_index": 59,
          "accessor": "DTTR_PCDOGS_F_Actor_ReleaseAttachment",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_RELEASE_ATTACHMENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_RELEASE_ATTACHMENT"
        }
      }
    },
    "Actor_ResetChainState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4456208,
            "rva": 261904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_HandleCollisionResponse"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461744,
            "rva": 267440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_HandleCollisionResponse"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461760,
            "rva": 267456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_HandleCollisionResponse"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "chain_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "78 ?? FF 75 ?? 8B 0D ??",
          "match_offset": -23
        },
        "docs": "Resets the actor chain state selected by chain_index.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 569,
          "symbol_index": 569,
          "accessor": "DTTR_PCDOGS_F_Actor_ResetChainState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_RESET_CHAIN_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_RESET_CHAIN_STATE"
        }
      }
    },
    "Actor_ResetVelocityAndSnap": {
      "function": {
        "analysis": {
          "en": {
            "address": 4211888,
            "rva": 17584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4212336,
            "rva": 18032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4212336,
            "rva": 18032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "actor_snap_script_state",
              "type": "int32_t*",
              "docs": "Entity/script snap state: target actor is at script slot and target position starts at index 82."
            },
            {
              "name": "target_angle",
              "type": "int16_t",
              "docs": "Angle forwarded to Actor_MoveToTarget for the selected target actor."
            },
            {
              "name": "transition_speed",
              "type": "int32_t",
              "docs": "Transition speed/control value forwarded to Actor_MoveToTarget."
            },
            {
              "name": "duration_q12",
              "type": "int32_t",
              "docs": "Script duration value scaled by 30 and shifted from Q12 before the move call."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4C 24 10 51 52 50 E8 ??",
          "match_offset": -61
        },
        "docs": "Reads a target actor from actor_snap_script_state target actor slot, clears its velocity slots, then moves it toward actor_snap_script_state target position slots through Actor_MoveToTarget.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 57,
          "symbol_index": 57,
          "accessor": "DTTR_PCDOGS_F_Actor_ResetVelocityAndSnap",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_RESET_VELOCITY_AND_SNAP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_RESET_VELOCITY_AND_SNAP"
        }
      }
    },
    "Actor_RuntimeOverlay": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "spawn_or_respawn_pos",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_radius_sq",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_height_sq",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "active_flag",
            "offset": 24,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "respawn_mode",
            "offset": 25,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "padding_1a",
            "offset": 26,
            "doc": null
          },
          {
            "type": "Level_RuntimeData*",
            "name": "level_data",
            "offset": 28,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "self_index",
            "offset": 32,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "default_anim_state",
            "offset": 34,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "link_targets[9]",
            "offset": 36,
            "doc": null
          },
          {
            "type": "PKG_ScriptHeader*",
            "name": "script_data_ptr",
            "offset": 72,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "actor_template_ptr",
            "offset": 76,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "component_node_ptrs[2]",
            "offset": 80,
            "doc": null
          },
          {
            "type": "Actor_RuntimeOverlay*",
            "name": "default_runtime_target_overlay_ptr",
            "offset": 88,
            "doc": "Self/overlay-style pointer slot known in actor runtime records."
          },
          {
            "type": "Math_Vec3I32",
            "name": "default_ref_pos",
            "offset": 92,
            "doc": null
          },
          {
            "type": "Math_Vec2I32",
            "name": "default_home",
            "offset": 104,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_direction",
            "offset": 112,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_direction_2",
            "offset": 116,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_movement_params[4]",
            "offset": 120,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_facing_angle",
            "offset": 136,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_rotation",
            "offset": 140,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_anim_param_0",
            "offset": 144,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_anim_param_1",
            "offset": 148,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "default_anim_param_2",
            "offset": 152,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "default_direction_mode",
            "offset": 154,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "default_anim_byte_3",
            "offset": 155,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_speed",
            "offset": 156,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_scale",
            "offset": 160,
            "doc": "Authored/default visual scale slot used by record-style actor initialization paths."
          },
          {
            "type": "int32_t",
            "name": "default_prop_4",
            "offset": 164,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_prop_5",
            "offset": 168,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_size",
            "offset": 172,
            "doc": "Authored/default size slot used by record-style actor initialization paths."
          },
          {
            "type": "int32_t",
            "name": "default_prop_7",
            "offset": 176,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_extra[3]",
            "offset": 180,
            "doc": null
          },
          {
            "type": "Math_Vec3I32*",
            "name": "camera_view_reference_vec_ptr",
            "offset": 192,
            "doc": "Vector/reference pointer used by camera-view lookup paths."
          },
          {
            "type": "Math_Vec3I32",
            "name": "live_ref_pos",
            "offset": 196,
            "doc": null
          },
          {
            "type": "Math_Vec2I32",
            "name": "home_pos",
            "offset": 208,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_direction",
            "offset": 216,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_direction_2",
            "offset": 220,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_movement_params[4]",
            "offset": 224,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_facing_angle",
            "offset": 240,
            "doc": "Live mirror of default_facing_angle in the runtime actor-state block."
          },
          {
            "type": "int32_t",
            "name": "live_rotation",
            "offset": 244,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_anim_param_0",
            "offset": 248,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_anim_param_1",
            "offset": 252,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "live_anim_param_2",
            "offset": 256,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "live_direction_mode",
            "offset": 258,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "live_anim_byte_3",
            "offset": 259,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_speed",
            "offset": 260,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_scale",
            "offset": 264,
            "doc": "Live visual scale slot used by runtime actor-state paths."
          },
          {
            "type": "int32_t",
            "name": "live_prop_4",
            "offset": 268,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_prop_5",
            "offset": 272,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_size",
            "offset": 276,
            "doc": "Live size slot used by runtime actor-state paths."
          },
          {
            "type": "int32_t",
            "name": "live_prop_7",
            "offset": 280,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_extra[3]",
            "offset": 284,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "linked_live_actor",
            "offset": 296,
            "doc": "Linked live Actor_State pointer in this runtime overlay."
          },
          {
            "type": "uint8_t",
            "name": "team_bitmask[16]",
            "offset": 300,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "script_timer",
            "offset": 316,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "script_entity_slot_index",
            "offset": 320,
            "doc": "Script-visible level entity-slot index."
          },
          {
            "type": "uint8_t",
            "name": "script_entity_stack[3]",
            "offset": 321,
            "doc": "Three contiguous script-entity stack bytes."
          },
          {
            "type": "int32_t",
            "name": "path_best_distance",
            "offset": 324,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "path_target",
            "offset": 328,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_result_x",
            "offset": 340,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_result_y",
            "offset": 344,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_result_z",
            "offset": 348,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_waypoint_x",
            "offset": 352,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_waypoint_z",
            "offset": 356,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_waypoint_y2",
            "offset": 360,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "owner_entity_index",
            "offset": 364,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "knockback_timer",
            "offset": 366,
            "doc": null
          },
          {
            "type": "int8_t",
            "name": "attachment_counter",
            "offset": 367,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_velocity",
            "offset": 368,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "transition_target_x",
            "offset": 372,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "transition_target_y",
            "offset": 376,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "transition_target_z_or_flags",
            "offset": 380,
            "doc": "Transition/snap target cluster tail; exact z-vs-flags split remains unstable."
          },
          {
            "type": "Math_Vec3I32",
            "name": "saved_velocity",
            "offset": 384,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "runtime_state_3",
            "offset": 396,
            "doc": "Runtime state dword adjacent to saved_velocity; target-angle semantics are still under review."
          },
          {
            "type": "int16_t",
            "name": "target_rotation_state",
            "offset": 400,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "runtime_state_4_hi",
            "offset": 402,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "behavior_state_selector",
            "offset": 404,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "runtime_state_5_hi",
            "offset": 406,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "runtime_state_6",
            "offset": 408,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "runtime_state_7",
            "offset": 412,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "runtime_state_8",
            "offset": 416,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "ai_scratch_padding[8]",
            "offset": 420,
            "doc": null
          }
        ],
        "size": 452,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Runtime actor overlay that mixes authored defaults, live mirrors, script entity-slot selectors, and linked live Actor_State pointers.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Actor_RuntimeOverlay"
        }
      }
    },
    "Actor_SetAlphaFade": {
      "function": {
        "analysis": {
          "en": {
            "address": 4435168,
            "rva": 240864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateFadeOut"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4440240,
            "rva": 245936,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateFadeOut"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4440208,
            "rva": 245904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateFadeOut"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "fade_steps",
              "type": "int32_t"
            },
            {
              "name": "fade_in",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C6 85 FF 75 ?? 81 A1 ??",
          "match_offset": -110
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 484,
          "symbol_index": 484,
          "accessor": "DTTR_PCDOGS_F_Actor_SetAlphaFade",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_SET_ALPHA_FADE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_SET_ALPHA_FADE"
        }
      }
    },
    "Actor_SnapToPosition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4212480,
            "rva": 18176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CalculateRotation"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateGroundBarycentric"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 255,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessSnapAndEntityUpdate"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 744,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4212928,
            "rva": 18624,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CalculateRotation"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateGroundBarycentric"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 255,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessSnapAndEntityUpdate"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 754,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4212928,
            "rva": 18624,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CalculateRotation"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateGroundBarycentric"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 255,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessSnapAndEntityUpdate"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 754,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "01 00 00 3B D0 0F 84 ??",
          "match_offset": -54
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 60,
          "symbol_index": 60,
          "accessor": "DTTR_PCDOGS_F_Actor_SnapToPosition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_SNAP_TO_POSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_SNAP_TO_POSITION"
        }
      }
    },
    "Actor_StartTransition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4213280,
            "rva": 18976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 338,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4213728,
            "rva": 19424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 338,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4213728,
            "rva": 19424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 338,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "record",
              "type": "PKG_ActorRecord*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C6 00 00 00 89 88 E8 ??",
          "match_offset": -60
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 62,
          "symbol_index": 62,
          "accessor": "DTTR_PCDOGS_F_Actor_StartTransition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_START_TRANSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_START_TRANSITION"
        }
      }
    },
    "Actor_State": {
      "type": {
        "members": [
          {
            "type": "Actor_State*",
            "name": "list_next",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "next_actor",
            "offset": 4,
            "doc": null
          },
          {
            "type": "void*",
            "name": "attach_point",
            "offset": 8,
            "doc": "Attach-point target; a Scene_Node* or Actor_State* union depending on the attach mode."
          },
          {
            "type": "Math_Matrix3x3I16",
            "name": "contact_basis",
            "offset": 12,
            "doc": "Ground/contact orientation basis matrix."
          },
          {
            "type": "int16_t",
            "name": "contact_basis_pad",
            "offset": 30,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "attach_offset",
            "offset": 32,
            "doc": null
          },
          {
            "type": "Math_Matrix3x3I16",
            "name": "rot_mat",
            "offset": 44,
            "doc": "Actor-local rotation/render transform matrix initialized by Entity_SpawnActor."
          },
          {
            "type": "int16_t",
            "name": "rot_mat_padding",
            "offset": 62,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "position",
            "offset": 64,
            "doc": "Logical actor position in game fixed-point units."
          },
          {
            "type": "Math_Vec3I32",
            "name": "sub_pos",
            "offset": 76,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "attach_flags",
            "offset": 88,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "anim_seq_index",
            "offset": 92,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "anim_seq_timer",
            "offset": 94,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "anim_frame_time",
            "offset": 96,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "actor_type",
            "offset": 100,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "lifecycle_flags",
            "offset": 101,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "attach_slot_index",
            "offset": 102,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "render_layer",
            "offset": 103,
            "doc": null
          },
          {
            "type": "Math_Vec2I16",
            "name": "visual_scale",
            "offset": 104,
            "doc": "Unpacked XY visual scale. Fabricated values can destabilize Actor_ProcessRendering, so engine-managed spawn/render paths are safer than direct writes."
          },
          {
            "type": "Mesh_Object*",
            "name": "mesh_data_ptr",
            "offset": 108,
            "doc": null
          },
          {
            "type": "void*",
            "name": "scene_vertex_data",
            "offset": 112,
            "doc": null
          },
          {
            "type": "void*",
            "name": "scene_anim_data",
            "offset": 116,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "chain_timer",
            "offset": 120,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "chain_state",
            "offset": 122,
            "doc": null
          },
          {
            "type": "Animation_ControllerGroup*",
            "name": "anim_ctrl_ptr",
            "offset": 124,
            "doc": null
          },
          {
            "type": "void*",
            "name": "anim_controller_root",
            "offset": 128,
            "doc": null
          },
          {
            "type": "void*",
            "name": "collision_list_heads",
            "offset": 132,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "behavior_flags",
            "offset": 136,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "mesh_polygon_count_or_ground_y",
            "offset": 140,
            "doc": "Render-coupled word used by mesh rendering paths as the count or limit for records reached through mesh_data_ptr. Copies require coherent visual state."
          },
          {
            "type": "void*",
            "name": "morph_normal_buffer",
            "offset": 144,
            "doc": "Per-actor morphed-normal scratch buffer used by skinned/morph render paths."
          },
          {
            "type": "void*",
            "name": "attach_point_table",
            "offset": 148,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "world_render_pos",
            "offset": 152,
            "doc": "Render-position mirror used by camera/render paths; transform writes require logical-position coherence."
          },
          {
            "type": "int16_t",
            "name": "collision_height",
            "offset": 164,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "collision_height_hi",
            "offset": 166,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "collision_radius",
            "offset": 168,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "cull_radius",
            "offset": 170,
            "doc": null
          },
          {
            "type": "Animation_StateTable*",
            "name": "anim_asset_table",
            "offset": 172,
            "doc": null
          },
          {
            "type": "Animation_MorphTargetVertex**",
            "name": "visual_morph_or_skin_target_table",
            "offset": 176,
            "doc": "Visual morph and skin target pointer table used by Bone_TransformVerticesWeighted. It is paired with borrowed mesh and scene vertex resources."
          },
          {
            "type": "int32_t",
            "name": "anim_tick",
            "offset": 180,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "move_anim_speed",
            "offset": 184,
            "doc": "Per-tick animation advance read by Model_AdvanceAnimation."
          },
          {
            "type": "uint8_t",
            "name": "trail_count",
            "offset": 186,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "component_count",
            "offset": 187,
            "doc": null
          },
          {
            "type": "Component_TrailObject*",
            "name": "trail_chain_ptr",
            "offset": 188,
            "doc": null
          },
          {
            "type": "Component_Instance*",
            "name": "component_array",
            "offset": 192,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "movement_handler_index",
            "offset": 196,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "transition_phase",
            "offset": 197,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "collision_class",
            "offset": 198,
            "doc": "Actor-to-actor collision class byte. Nonzero paths dereference collision_component_or_parent_component."
          },
          {
            "type": "uint8_t",
            "name": "attach_refcount",
            "offset": 199,
            "doc": null
          },
          {
            "type": "Component_Instance*",
            "name": "collision_component_or_parent_component",
            "offset": 200,
            "doc": "Collision component pointer used when collision_class is nonzero; preserve it with collision state bytes."
          },
          {
            "type": "int16_t",
            "name": "fade_timer",
            "offset": 204,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "scale_factor",
            "offset": 206,
            "doc": "Actor scale factor copied through runtime actor paths. Direct writes require additional visual-state handling."
          },
          {
            "type": "Scene_Node**",
            "name": "render_node_list",
            "offset": 208,
            "doc": "NULL-terminated runtime render node list read by Scene_RenderNodeTree. Runtime rendering fixes iterate this list with pointer guards."
          },
          {
            "type": "Math_Vec3I32",
            "name": "velocity",
            "offset": 212,
            "doc": "Actor velocity vector; bytes +0xD8..+0xDF double as a Signal_QueueEntry[3]/follow-target overlay for some behaviors."
          },
          {
            "type": "int16_t",
            "name": "facing_current",
            "offset": 224,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "facing_target",
            "offset": 226,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "facing_blend",
            "offset": 228,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "roll_angle",
            "offset": 230,
            "doc": null
          },
          {
            "type": "Collision_Node*",
            "name": "ground_collision_node",
            "offset": 232,
            "doc": "Ground/contact collision or scene-geometry node pointer. Polygon access routes through the node's polygon/vertex arrays."
          },
          {
            "type": "Collision_Polygon*",
            "name": "ground_contact_polygon",
            "offset": 236,
            "doc": "Ground-contact polygon paired with ground_collision_node and passed through polygon/contact helpers."
          },
          {
            "type": "int32_t",
            "name": "rotation",
            "offset": 240,
            "doc": null
          },
          {
            "type": "PKG_ActorRecord*",
            "name": "record_ptr",
            "offset": 244,
            "doc": "Normally actor-record-backed; powerup paths may reuse this slot as a source Powerup_Entry pointer for live actors spawned from powerup entries."
          },
          {
            "type": "Actor_State*",
            "name": "child_actor",
            "offset": 248,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "fade_alpha",
            "offset": 252,
            "doc": null
          },
          {
            "type": "int16_t**",
            "name": "morph_table_list",
            "offset": 256,
            "doc": "Pointer list of int16 morph tables used by morph/skin animation paths."
          },
          {
            "type": "PKG_LODEntry*",
            "name": "level_local_lod_redirect_record",
            "offset": 260,
            "doc": "Level-local LOD redirect record; Actor_ProcessRendering follows this record to an alternate actor/render source tied to the current level."
          },
          {
            "type": "Actor_State*",
            "name": "parent_actor",
            "offset": 264,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_push_xz",
            "offset": 268,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_response_xz",
            "offset": 272,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "alloc_size",
            "offset": 276,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "camera_mat_xz",
            "offset": 280,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "camera_mat_yz",
            "offset": 284,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "camera_pitch",
            "offset": 288,
            "doc": null
          },
          {
            "type": "Math_Matrix3x3I16*",
            "name": "camera_rot_matrix_ptr",
            "offset": 292,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "linked_actor",
            "offset": 296,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "camera_cos_factor",
            "offset": 300,
            "doc": null
          },
          {
            "type": "void*",
            "name": "camera_scratch_vec_ptr",
            "offset": 304,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "camera_yaw",
            "offset": 308,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "reserved_138",
            "offset": 312,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "script_timer",
            "offset": 316,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "script_entity_slot_index",
            "offset": 320,
            "doc": "Script-visible level entity-slot index."
          },
          {
            "type": "uint8_t",
            "name": "script_entity_stack[3]",
            "offset": 321,
            "doc": "Three contiguous script-entity stack bytes used as an array."
          },
          {
            "type": "int32_t",
            "name": "path_best_distance",
            "offset": 324,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "path_target",
            "offset": 328,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_result_x",
            "offset": 340,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_result_y",
            "offset": 344,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_result_z",
            "offset": 348,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_waypoint_x",
            "offset": 352,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_waypoint_z",
            "offset": 356,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "path_waypoint_y2",
            "offset": 360,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "owner_entity_index",
            "offset": 364,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "knockback_timer",
            "offset": 366,
            "doc": null
          },
          {
            "type": "int8_t",
            "name": "attachment_counter",
            "offset": 367,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "live_velocity",
            "offset": 368,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "default_coll_radius",
            "offset": 372,
            "doc": "Actor_State default collision radius restored by reset/despawn paths."
          },
          {
            "type": "int32_t",
            "name": "default_coll_height",
            "offset": 376,
            "doc": "Actor_State default collision height restored by reset/despawn paths."
          },
          {
            "type": "uint32_t",
            "name": "default_flags",
            "offset": 380,
            "doc": "Actor_State default flag mask restored by reset/despawn paths."
          },
          {
            "type": "int32_t",
            "name": "runtime_state_0",
            "offset": 384,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "runtime_state_1",
            "offset": 388,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "runtime_state_2",
            "offset": 392,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "runtime_state_3",
            "offset": 396,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "runtime_jump_state",
            "offset": 400,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "runtime_state_4_hi",
            "offset": 402,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "runtime_counter",
            "offset": 404,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "runtime_state_5_hi",
            "offset": 406,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "runtime_state_6",
            "offset": 408,
            "doc": null
          },
          {
            "type": "Component_Instance*",
            "name": "attached_component_a",
            "offset": 412,
            "doc": null
          },
          {
            "type": "Component_Instance*",
            "name": "attached_component_b",
            "offset": 416,
            "doc": null
          },
          {
            "type": "Actor_ContactSlot",
            "name": "contact_slots[4]",
            "offset": 420,
            "doc": "Four actor-contact tracking slots holding distance plus contacted actor."
          }
        ],
        "size": 452,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Live actor record. Overlays: +0x68..+0x7A doubles as a moving-platform state block, and velocity bytes +0xD8..+0xDF double as Signal_QueueEntry[3]/follow-target storage.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Actor_State"
        }
      }
    },
    "Actor_TracePath": {
      "function": {
        "analysis": {
          "en": {
            "address": 4213536,
            "rva": 19232,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_NullActorState1"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_NullActorState2"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_NullActorState3"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_TargetSelectorDispatchTable"
                },
                "instr_offset": 704,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_WorkBuffer"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 394,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 424,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 2222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 2141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 2978,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CalculateRotation"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 200,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 363,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 690,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CheckBonusUnlock"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckCollisionBit"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEnsureCameraActive"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 456,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPathfindToEntity"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunToTarget"
                },
                "instr_offset": 431,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTestPathTrace"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTraceActorPath"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWalkToTarget"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4213984,
            "rva": 19680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_NullActorState1"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_NullActorState2"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_NullActorState3"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_TargetSelectorDispatchTable"
                },
                "instr_offset": 704,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_WorkBuffer"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 394,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 424,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 2222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 2141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 2978,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CalculateRotation"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 200,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 363,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 690,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CheckBonusUnlock"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckCollisionBit"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEnsureCameraActive"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 456,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPathfindToEntity"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunToTarget"
                },
                "instr_offset": 431,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTestPathTrace"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTraceActorPath"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWalkToTarget"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4213984,
            "rva": 19680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_NullActorState1"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_NullActorState2"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_NullActorState3"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_TargetSelectorDispatchTable"
                },
                "instr_offset": 704,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_TracePath_WorkBuffer"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 394,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 424,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 2222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 2141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 2978,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CalculateRotation"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 200,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 363,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 690,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CheckBonusUnlock"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckCollisionBit"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEnsureCameraActive"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 456,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPathfindToEntity"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunToTarget"
                },
                "instr_offset": 431,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTestPathTrace"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTraceActorPath"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWalkToTarget"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "entity",
              "type": "Entity_State*",
              "docs": "Entity whose actor path-trace fields are read and updated."
            },
            {
              "name": "target_selector",
              "type": "int32_t",
              "docs": "Signed script/actor selector; positive values address actor slots and negative sentinel values select special path targets."
            },
            {
              "name": "max_path_distance",
              "type": "int32_t",
              "docs": "Primary distance cap used when accepting or rejecting a candidate path target."
            },
            {
              "name": "best_path_distance",
              "type": "int32_t",
              "docs": "Current best/pruning distance carried through recursive trace attempts."
            },
            {
              "name": "trace_flags",
              "type": "int32_t",
              "docs": "Bitfield controlling recursive trace/result modes; known values include 0, 0x20, and 0x300."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Actor_TracePath_TargetSelectorDispatchTable"
            },
            "instr_offset": 704,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_TracePath_WorkBuffer"
            },
            "instr_offset": 18,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_TracePath_NullActorState2"
            },
            "instr_offset": 39,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_TracePath_NullActorState1"
            },
            "instr_offset": 29,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_TracePath_NullActorState3"
            },
            "instr_offset": 23,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "D2 3B F2 57 75 ?? BE ??",
          "match_offset": -12
        },
        "docs": "Traces and selects an actor path target. Returns the selected path/actor index, or 0 when no valid path is available.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 64,
          "symbol_index": 64,
          "accessor": "DTTR_PCDOGS_F_Actor_TracePath",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_TRACE_PATH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_TRACE_PATH"
        }
      }
    },
    "Actor_TracePath_NullActorState1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4546048,
            "rva": 351744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554384,
            "rva": 360080,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554368,
            "rva": 360064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_TracePath"
            },
            "instr_offset": 29,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 333,
          "symbol_index": 333,
          "accessor": "DTTR_PCDOGS_D_Actor_TracePath_NullActorState1",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_TRACE_PATH_NULL_ACTOR_STATE1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_TRACE_PATH_NULL_ACTOR_STATE1"
        }
      }
    },
    "Actor_TracePath_NullActorState2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4545881,
            "rva": 351577,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554217,
            "rva": 359913,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554201,
            "rva": 359897,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_TracePath"
            },
            "instr_offset": 39,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Actor_TracePath byte/cell used when the source actor is NULL while path_trace_work_buffer, current_level_data entity slots, and EntityNavigationWorkList_ActiveBufferPtr are active.",
        "sdk": {
          "id": 332,
          "symbol_index": 332,
          "accessor": "DTTR_PCDOGS_D_Actor_TracePath_NullActorState2",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_TRACE_PATH_NULL_ACTOR_STATE2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_TRACE_PATH_NULL_ACTOR_STATE2"
        }
      }
    },
    "Actor_TracePath_NullActorState3": {
      "data": {
        "analysis": {
          "en": {
            "address": 4546152,
            "rva": 351848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554488,
            "rva": 360184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554472,
            "rva": 360168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_TracePath"
            },
            "instr_offset": 23,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 334,
          "symbol_index": 334,
          "accessor": "DTTR_PCDOGS_D_Actor_TracePath_NullActorState3",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_TRACE_PATH_NULL_ACTOR_STATE3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_TRACE_PATH_NULL_ACTOR_STATE3"
        }
      }
    },
    "Actor_TracePath_TargetSelectorDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4216888,
            "rva": 22584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 704,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4217336,
            "rva": 23032,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 704,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4217336,
            "rva": 23032,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 704,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_TracePath"
            },
            "instr_offset": 704,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Actor_TracePath",
          "instr_offset": 704,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Ten-entry uint32_t jump table used by Actor_TracePath for negative target-selector sentinel values -0x8000..-0x7FF7.",
        "sdk": {
          "id": 20,
          "symbol_index": 20,
          "accessor": "DTTR_PCDOGS_D_Actor_TracePath_TargetSelectorDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_TRACE_PATH_TARGET_SELECTOR_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_TRACE_PATH_TARGET_SELECTOR_DISPATCH_TABLE"
        }
      }
    },
    "Actor_TracePath_WorkBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4545856,
            "rva": 351552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554192,
            "rva": 359888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554176,
            "rva": 359872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_TracePath"
            },
            "instr_offset": 18,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 331,
          "symbol_index": 331,
          "accessor": "DTTR_PCDOGS_D_Actor_TracePath_WorkBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_TRACE_PATH_WORK_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_TRACE_PATH_WORK_BUFFER"
        }
      }
    },
    "Actor_UpdateAnimationAndVisibility": {
      "function": {
        "analysis": {
          "en": {
            "address": 4208640,
            "rva": 14336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckSavedActiveActorCameraDistance"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 808,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 829,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 644,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4209040,
            "rva": 14736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 845,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 866,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 681,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4209040,
            "rva": 14736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 845,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 866,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 681,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "F6 D3 80 E3 01 0F 84 ??",
          "match_offset": -20
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 45,
          "symbol_index": 45,
          "accessor": "DTTR_PCDOGS_F_Actor_UpdateAnimationAndVisibility",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_UPDATE_ANIMATION_AND_VISIBILITY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_UPDATE_ANIMATION_AND_VISIBILITY"
        }
      }
    },
    "Actor_UpdateAnimationState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4237968,
            "rva": 43664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_UpdateAnimationState_ConfirmTextEnabled"
                },
                "instr_offset": 760,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 1149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 1072,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 1092,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_CheckBoneAvailable"
                },
                "instr_offset": 787,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1743,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4238448,
            "rva": 44144,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_UpdateAnimationState_ConfirmTextEnabled"
                },
                "instr_offset": 760,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 1149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 1072,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 1092,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1746,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4238448,
            "rva": 44144,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_UpdateAnimationState_ConfirmTextEnabled"
                },
                "instr_offset": 760,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 1149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 1072,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 1092,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1746,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "record",
              "type": "PKG_ActorRecord*"
            },
            {
              "name": "update_from_input",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Actor_UpdateAnimationState_ConfirmTextEnabled"
            },
            "instr_offset": 760,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 08 55 56 57 8B 7C 24 18 57 E8 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 92,
          "symbol_index": 92,
          "accessor": "DTTR_PCDOGS_F_Actor_UpdateAnimationState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_UPDATE_ANIMATION_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_UPDATE_ANIMATION_STATE"
        }
      }
    },
    "Actor_UpdateAnimationState_ConfirmTextEnabled": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830116,
            "rva": 23635812,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 760,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841380,
            "rva": 23647076,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 760,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840804,
            "rva": 23646500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 760,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Actor_UpdateAnimationState"
            },
            "instr_offset": 760,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 929,
          "symbol_index": 929,
          "accessor": "DTTR_PCDOGS_D_Actor_UpdateAnimationState_ConfirmTextEnabled",
          "sdk_id": "DTTR_PCDOGS_DATA_ACTOR_UPDATE_ANIMATION_STATE_CONFIRM_TEXT_ENABLED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ACTOR_UPDATE_ANIMATION_STATE_CONFIRM_TEXT_ENABLED"
        }
      }
    },
    "Actor_UpdateFadeOut": {
      "function": {
        "analysis": {
          "en": {
            "address": 4435328,
            "rva": 241024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SetAlphaFade"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4440400,
            "rva": 246096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SetAlphaFade"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4440368,
            "rva": 246064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SetAlphaFade"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "fade_ticks",
              "type": "int16_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "BF C0 6A 00 50 56 E8 ??",
          "match_offset": -32
        },
        "docs": "Advances an actor fade-out/lifecycle step and returns a low-byte boolean completion/status value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 485,
          "symbol_index": 485,
          "accessor": "DTTR_PCDOGS_F_Actor_UpdateFadeOut",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_UPDATE_FADE_OUT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_UPDATE_FADE_OUT"
        }
      }
    },
    "Actor_UpdateList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4204544,
            "rva": 10240,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1513,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4204944,
            "rva": 10640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1513,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4204944,
            "rva": 10640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1513,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Scene_Node*",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 57 E8 ?? ?? ?? ?? BF",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 42,
          "symbol_index": 42,
          "accessor": "DTTR_PCDOGS_F_Actor_UpdateList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_UPDATE_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_UPDATE_LIST"
        }
      }
    },
    "Actor_UpdateProjectileList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4209664,
            "rva": 15360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_AdvanceAnimation"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_AdvanceAnimation"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1523,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4210112,
            "rva": 15808,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_AdvanceAnimation"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_AdvanceAnimation"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1523,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4210112,
            "rva": 15808,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_AdvanceAnimation"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_AdvanceAnimation"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1523,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 35 ?? ?? ?? ?? 57 BF ?? ?? ?? ?? 85 F6 0F",
          "match_offset": 0
        },
        "docs": "Walks Projectile_LiveActorListHead, updates projectile actors through physics/animation/render paths, and removes actors whose lifecycle state indicates destruction.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 47,
          "symbol_index": 47,
          "accessor": "DTTR_PCDOGS_F_Actor_UpdateProjectileList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_UPDATE_PROJECTILE_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_UPDATE_PROJECTILE_LIST"
        }
      }
    },
    "Actor_UpdateRotationFromVelocity": {
      "function": {
        "analysis": {
          "en": {
            "address": 4422416,
            "rva": 228112,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4427472,
            "rva": 233168,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4427440,
            "rva": 233136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "velocity_xz",
              "type": "int32_t*"
            },
            {
              "name": "turn_step",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 50 8B 41 08 50 E8 ??",
          "match_offset": -30
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 451,
          "symbol_index": 451,
          "accessor": "DTTR_PCDOGS_F_Actor_UpdateRotationFromVelocity",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_UPDATE_ROTATION_FROM_VELOCITY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_UPDATE_ROTATION_FROM_VELOCITY"
        }
      }
    },
    "Actor_ValidateDirectionAndProcessInput": {
      "function": {
        "analysis": {
          "en": {
            "address": 4469360,
            "rva": 275056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementCommands"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4476576,
            "rva": 282272,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementCommands"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4476512,
            "rva": 282208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementCommands"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "direction_mode",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "F6 C4 04 75 ?? 56 E8 ??",
          "match_offset": -17
        },
        "docs": "Movement/input check for actor-local direction processing. It validates the requested direction mode against actor movement state and funnels accepted input through movement-vector processing.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 604,
          "symbol_index": 604,
          "accessor": "DTTR_PCDOGS_F_Actor_ValidateDirectionAndProcessInput",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ACTOR_VALIDATE_DIRECTION_AND_PROCESS_INPUT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ACTOR_VALIDATE_DIRECTION_AND_PROCESS_INPUT"
        }
      }
    },
    "Animation_CalculateSplineParameter": {
      "function": {
        "analysis": {
          "en": {
            "address": 4244160,
            "rva": 49856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateSpline"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesMorphed"
                },
                "instr_offset": 406,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4244640,
            "rva": 50336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateSpline"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesMorphed"
                },
                "instr_offset": 406,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4244640,
            "rva": 50336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateSpline"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesMorphed"
                },
                "instr_offset": 406,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "sample_time",
              "type": "uint32_t",
              "docs": "Current animation sample time in 1/64-frame keyframe units."
            },
            {
              "name": "next_key_time",
              "type": "uint32_t",
              "docs": "Absolute next-key time in the same 1/64-frame units."
            },
            {
              "name": "prev_key_packed",
              "type": "uint32_t",
              "docs": "Previous keyframe timing/easing word; high bits encode previous-key time and low bits encode easing metadata."
            },
            {
              "name": "next_ease_index",
              "type": "uint8_t",
              "docs": "Low-byte easing/control index from the next keyframe timing word."
            },
            {
              "name": "keyframe_data",
              "type": "uint8_t*",
              "docs": "Base of the keyframe data block; easing/control records are addressed before this pointer."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 75 08 8B C7 C1 E8 ??",
          "match_offset": -12
        },
        "docs": "Computes the normalized Q12 spline/easing parameter between two animation keyframes, using the previous/next packed key times, an interval reciprocal lookup when available, and easing/control records stored before keyframe_data. The returned Q12 weight feeds vector/quaternion keyframe interpolation.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 100,
          "symbol_index": 100,
          "accessor": "DTTR_PCDOGS_F_Animation_CalculateSplineParameter",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_CALCULATE_SPLINE_PARAMETER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_CALCULATE_SPLINE_PARAMETER"
        }
      }
    },
    "Animation_ChainEntry": {
      "type": {
        "members": [
          {
            "type": "Animation_DataBlock*",
            "name": "animation_data_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "void*",
            "name": "bone_array_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "chain_type",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "state_flags[2]",
            "offset": 9,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "blend_mode",
            "offset": 11,
            "doc": null
          },
          {
            "type": "Animation_FrameHeader*",
            "name": "frame_data_ptr",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "blend_weight",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "playback_time",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "chain_index",
            "offset": 24,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "frame_counter",
            "offset": 26,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "transition_time",
            "offset": 28,
            "doc": null
          }
        ],
        "size": 32,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_ChainEntry"
        }
      }
    },
    "Animation_ChannelHeader": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "channel_params[7]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "loop_flags",
            "offset": 7,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "start_keyframe",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "end_keyframe",
            "offset": 10,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_ChannelHeader"
        }
      }
    },
    "Animation_CheckKeyframeActive": {
      "function": {
        "analysis": {
          "en": {
            "address": 4248096,
            "rva": 53792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4248576,
            "rva": 54272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4248576,
            "rva": 54272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint8_t",
          "params": [
            {
              "name": "sample_time",
              "type": "uint32_t",
              "docs": "Animation sample time in the caller's channel time domain."
            },
            {
              "name": "channel",
              "type": "Animation_SplineChannel*",
              "docs": "Spline channel descriptor whose packed keyframes are tested."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 3B FE 72 ?? 0F 84 ??",
          "match_offset": -80
        },
        "docs": "Returns whether a spline channel is active at sample_time, with constant channels using packed_first_key as a start threshold and keyed channels locating the active packed keyframe by scan or binary search. Low channel_flags bits control end-of-channel wrapping.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 105,
          "symbol_index": 105,
          "accessor": "DTTR_PCDOGS_F_Animation_CheckKeyframeActive",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_CHECK_KEYFRAME_ACTIVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_CHECK_KEYFRAME_ACTIVE"
        }
      }
    },
    "Animation_ColorKeyframe": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "frame_number",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "interpolation_flag",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "color",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "interpolation_mode",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_ColorKeyframe"
        }
      }
    },
    "Animation_ControllerEntry": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "controller_type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 1,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "event_queue_id",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "playback_speed",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "current_time",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Animation_DataBlock*",
            "name": "animation_data_ptr",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Animation_SplineChannel*",
            "name": "param_data_ptr",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Animation_FrameHeader*",
            "name": "frame_sequence_ptr",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "blend_weight",
            "offset": 24,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "target_data",
            "offset": 28,
            "doc": null
          }
        ],
        "size": 32,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_ControllerEntry"
        }
      }
    },
    "Animation_ControllerGroup": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "group_flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "active_controller_count",
            "offset": 1,
            "doc": "Temporary controller_count override used for one Graphics_ProcessMeshCommands call; the original 16-bit count is restored afterward."
          },
          {
            "type": "int16_t",
            "name": "controller_count",
            "offset": 2,
            "doc": null
          },
          {
            "type": "Animation_ControllerSlot**",
            "name": "controller_slot_array",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_ControllerGroup"
        }
      }
    },
    "Animation_ControllerSlot": {
      "type": {
        "members": [
          {
            "type": "Animation_DataBlock*",
            "name": "anim_data_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "controller_type",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "status_flags",
            "offset": 5,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "reserved",
            "offset": 6,
            "doc": "Reserved controller word used near the fields read by Animation_ProcessController."
          },
          {
            "type": "void*",
            "name": "controller_payload_ptr",
            "offset": 8,
            "doc": "Variant controller payload pointer containing type-specific byte/dword data interpreted by Animation_ProcessController."
          },
          {
            "type": "Animation_FrameHeader*",
            "name": "frame_sequence_ptr",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_ControllerSlot"
        }
      }
    },
    "Animation_ConvertQuatToRotMatrix": {
      "function": {
        "analysis": {
          "en": {
            "address": 4247840,
            "rva": 53536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4248320,
            "rva": 54016,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4248320,
            "rva": 54016,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Math_Matrix3x3I16*",
          "params": [
            {
              "name": "frame_time",
              "type": "uint32_t",
              "docs": "Animation frame/time value in the track time domain."
            },
            {
              "name": "quat_track",
              "type": "Animation_SplineChannel*",
              "docs": "Quaternion keyframe track descriptor."
            },
            {
              "name": "out_matrix",
              "type": "Math_Matrix3x3I16*",
              "docs": "Receives the 3x3 signed fixed-point rotation matrix."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "24 18 57 50 51 52 E8 ??",
          "match_offset": -16
        },
        "docs": "Samples a quaternion animation track and converts it to a 3x3 int16 rotation matrix.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 104,
          "symbol_index": 104,
          "accessor": "DTTR_PCDOGS_F_Animation_ConvertQuatToRotMatrix",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_CONVERT_QUAT_TO_ROT_MATRIX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_CONVERT_QUAT_TO_ROT_MATRIX"
        }
      }
    },
    "Animation_Data": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "frame_count",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "bone_count",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved",
            "offset": 3,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "keyframe_data[6]",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 28,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_Data"
        }
      }
    },
    "Animation_DataBlock": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "num_position_channels",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "num_rotation_channels",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "num_visibility_channels",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "num_scale_channels",
            "offset": 3,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "num_morph_channels",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "num_scalar_channels",
            "offset": 5,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_06",
            "offset": 6,
            "doc": "Reserved byte before fixup_flags; PKG_FixUpResourceAnimationData reads the channel pointers and fixup flags."
          },
          {
            "type": "uint8_t",
            "name": "fixup_flags",
            "offset": 7,
            "doc": "Animation block fixup flags; bit 0x02 marks rebased channel pointer tables."
          },
          {
            "type": "int16_t",
            "name": "start_keyframe",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "end_keyframe",
            "offset": 10,
            "doc": null
          },
          {
            "type": "Animation_SplineChannel*",
            "name": "position_channels",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Animation_SplineChannel*",
            "name": "rotation_channels",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Animation_SplineChannel*",
            "name": "visibility_channels",
            "offset": 20,
            "doc": null
          },
          {
            "type": "Animation_SplineChannel*",
            "name": "scale_channels",
            "offset": 24,
            "doc": null
          },
          {
            "type": "Animation_SplineChannel*",
            "name": "morph_channels",
            "offset": 28,
            "doc": null
          },
          {
            "type": "Animation_SplineChannel*",
            "name": "scalar_channels",
            "offset": 32,
            "doc": null
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_DataBlock"
        }
      }
    },
    "Animation_FrameData": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "frame_type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_01",
            "offset": 1,
            "doc": "Reserved byte for internal frame data."
          },
          {
            "type": "int16_t",
            "name": "normal_count",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "vertex_count",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_06[2]",
            "offset": 6,
            "doc": "Reserved bytes before normal_data. It is reserved for internal use."
          },
          {
            "type": "Mesh_VertexNormal*",
            "name": "normal_data",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "frame_extra_data[10]",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_16[2]",
            "offset": 22,
            "doc": "Reserved tail bytes. It is reserved for internal use."
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_FrameData"
        }
      }
    },
    "Animation_FrameHeader": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "fixup_flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding_01",
            "offset": 1,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "frame_count",
            "offset": 2,
            "doc": null
          },
          {
            "type": "Animation_FrameData**",
            "name": "frame_ptrs",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_FrameHeader"
        }
      }
    },
    "Animation_FrameVertex": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "pos",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "padding",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_FrameVertex"
        }
      }
    },
    "Animation_InterpolateKeyframeQuatBlend": {
      "function": {
        "analysis": {
          "en": {
            "address": 4244800,
            "rva": 50496,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 754,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4245280,
            "rva": 50976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 754,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4245280,
            "rva": 50976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 754,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int16_t",
          "params": [
            {
              "name": "frame_time",
              "type": "uint32_t",
              "docs": "Animation frame/time value in the track time domain."
            },
            {
              "name": "blend_weight_q14",
              "type": "int32_t",
              "docs": "Q14 blend amount used to mix the sampled quaternion into the destination."
            },
            {
              "name": "quat_track",
              "type": "Animation_SplineChannel*",
              "docs": "Quaternion keyframe track descriptor."
            },
            {
              "name": "inout_quat",
              "type": "Math_QuaternionI16*",
              "docs": "Destination quaternion that is blended in place."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "45 F8 56 50 51 52 E8 ??",
          "match_offset": -14
        },
        "docs": "Samples a quaternion animation track and blends the result into an existing Q14 quaternion.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 101,
          "symbol_index": 101,
          "accessor": "DTTR_PCDOGS_F_Animation_InterpolateKeyframeQuatBlend",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_INTERPOLATE_KEYFRAME_QUAT_BLEND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_INTERPOLATE_KEYFRAME_QUAT_BLEND"
        }
      }
    },
    "Animation_InterpolateKeyframeVec3Blend": {
      "function": {
        "analysis": {
          "en": {
            "address": 4243008,
            "rva": 48704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 648,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4243488,
            "rva": 49184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 648,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4243488,
            "rva": 49184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 648,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Math_Vec3I32*",
          "params": [
            {
              "name": "frame_time",
              "type": "uint32_t",
              "docs": "Animation frame/time value in the track time domain."
            },
            {
              "name": "blend_weight_q12",
              "type": "int32_t",
              "docs": "Q12 blend amount applied to each sampled vector component."
            },
            {
              "name": "vec3_track",
              "type": "Animation_SplineChannel*",
              "docs": "Position/vector keyframe track descriptor."
            },
            {
              "name": "inout_vec3",
              "type": "Math_Vec3I32*",
              "docs": "Destination vector blended in place and returned."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? 8B 44 24 2C 8B 74",
          "match_offset": -22
        },
        "docs": "Samples vec3_track at frame_time with Animation_InterpolateVec3, then blends the sampled x/y/z into inout_vec3 in place using ((sample - current) * blend_weight_q12) >> 12.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 98,
          "symbol_index": 98,
          "accessor": "DTTR_PCDOGS_F_Animation_InterpolateKeyframeVec3Blend",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_INTERPOLATE_KEYFRAME_VEC3_BLEND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_INTERPOLATE_KEYFRAME_VEC3_BLEND"
        }
      }
    },
    "Animation_InterpolateQuat": {
      "function": {
        "analysis": {
          "en": {
            "address": 4245392,
            "rva": 51088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1569,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1634,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1744,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 1715,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_ConvertQuatToRotMatrix"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4245872,
            "rva": 51568,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1569,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1634,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1744,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 1715,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_ConvertQuatToRotMatrix"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4245872,
            "rva": 51568,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1569,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1634,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 1744,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 1715,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_ConvertQuatToRotMatrix"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Math_QuaternionI16*",
          "params": [
            {
              "name": "frame_time",
              "type": "uint32_t",
              "docs": "Animation frame/time value in the track time domain."
            },
            {
              "name": "quat_track",
              "type": "Animation_SplineChannel*",
              "docs": "Quaternion keyframe track descriptor."
            },
            {
              "name": "out_quat",
              "type": "Math_QuaternionI16*",
              "docs": "Receives the interpolated four-component Q14 quaternion."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "06 03 D0 8B 06 C1 E8 ??",
          "match_offset": -71
        },
        "docs": "Samples/interpolates a quaternion animation track into a Q14 quaternion.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 102,
          "symbol_index": 102,
          "accessor": "DTTR_PCDOGS_F_Animation_InterpolateQuat",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_INTERPOLATE_QUAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_INTERPOLATE_QUAT"
        }
      }
    },
    "Animation_InterpolateQuaternionSlerp": {
      "function": {
        "analysis": {
          "en": {
            "address": 4247152,
            "rva": 52848,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateIntegerSquareRoot"
                },
                "instr_offset": 374,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1569,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1634,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1744,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4247632,
            "rva": 53328,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateIntegerSquareRoot"
                },
                "instr_offset": 374,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1569,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1634,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1744,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4247632,
            "rva": 53328,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateIntegerSquareRoot"
                },
                "instr_offset": 374,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1569,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1634,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1744,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "out_quat",
              "type": "Math_QuaternionI16*",
              "docs": "Receives the interpolated Q14 quaternion."
            },
            {
              "name": "from_quat",
              "type": "Math_QuaternionI16*",
              "docs": "Starting Q14 quaternion."
            },
            {
              "name": "to_quat",
              "type": "Math_QuaternionI16*",
              "docs": "Ending Q14 quaternion."
            },
            {
              "name": "blend_weight_q14",
              "type": "int32_t",
              "docs": "Q14 interpolation weight."
            },
            {
              "name": "angle_fp12",
              "type": "int32_t",
              "docs": "Angular distance/phase in the game's 12-bit sine-table domain."
            },
            {
              "name": "spin_phase",
              "type": "int32_t",
              "docs": "Additional phase term folded into the interpolation angle."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 53 56 57 8B 7D 18 66 85 FF 0F 84 ??",
          "match_offset": 0
        },
        "docs": "Interpolates two Q14 quaternions, using sine-weighted spherical interpolation when an angle is available and linear interpolation as a fallback.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 103,
          "symbol_index": 103,
          "accessor": "DTTR_PCDOGS_F_Animation_InterpolateQuaternionSlerp",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_INTERPOLATE_QUATERNION_SLERP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_INTERPOLATE_QUATERNION_SLERP"
        }
      }
    },
    "Animation_InterpolateSpline": {
      "function": {
        "analysis": {
          "en": {
            "address": 4248368,
            "rva": 54064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 698,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4248848,
            "rva": 54544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 698,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4248848,
            "rva": 54544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 698,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int16_t",
          "params": [
            {
              "name": "sample_time",
              "type": "uint32_t",
              "docs": "Animation sample time in the caller's channel time domain."
            },
            {
              "name": "channel",
              "type": "Animation_SplineChannel*",
              "docs": "Scalar spline channel descriptor to sample."
            },
            {
              "name": "out_value",
              "type": "int16_t*",
              "docs": "Receives the sampled int16 channel value."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C0 FF 03 00 3B C8 72 ?? 75 13",
          "match_offset": -78
        },
        "docs": "Samples a scalar animation spline channel at sample_time and writes the int16 result to out_value. Constant channels write packed_first_key >> 12, while keyed channels find neighboring keys, compute the Q12 easing parameter, and evaluate a cubic Hermite-style fixed-point blend.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 106,
          "symbol_index": 106,
          "accessor": "DTTR_PCDOGS_F_Animation_InterpolateSpline",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_INTERPOLATE_SPLINE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_INTERPOLATE_SPLINE"
        }
      }
    },
    "Animation_InterpolateVec3": {
      "function": {
        "analysis": {
          "en": {
            "address": 4243120,
            "rva": 48816,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeVec3Blend"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4243600,
            "rva": 49296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeVec3Blend"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4243600,
            "rva": 49296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeVec3Blend"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "frame_time",
              "type": "uint32_t",
              "docs": "Animation frame/time value in the track time domain."
            },
            {
              "name": "vec3_track",
              "type": "Animation_SplineChannel*",
              "docs": "Position/vector keyframe track descriptor."
            },
            {
              "name": "out_vec3",
              "type": "Math_Vec3I32*",
              "docs": "Receives the interpolated three-component vector."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "08 03 D0 8B 07 C1 E8 ??",
          "match_offset": -79
        },
        "docs": "Samples a position/vector animation spline channel into out_vec3. Constant channels copy three int16 components from the track descriptor; keyed channels locate neighboring keyframes and write interpolated 32-bit x/y/z components using Q12 coefficients selected by channel flags.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 99,
          "symbol_index": 99,
          "accessor": "DTTR_PCDOGS_F_Animation_InterpolateVec3",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_INTERPOLATE_VEC3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_INTERPOLATE_VEC3"
        }
      }
    },
    "Animation_MorphKeyframe": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "timing_flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "morph_target_index",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "blend_weight",
            "offset": 6,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "keyframe_count",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "target_id",
            "offset": 9,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "flags",
            "offset": 10,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_MorphKeyframe"
        }
      }
    },
    "Animation_MorphTargetVertex": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "delta",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "flags",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_MorphTargetVertex"
        }
      }
    },
    "Animation_MorphVertex": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "delta",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "flags",
            "offset": 6,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "normal",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "vertex_index",
            "offset": 14,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_MorphVertex"
        }
      }
    },
    "Animation_PositionKeyframe": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "timing_flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "pos",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "tangent_out",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "tangent_in",
            "offset": 28,
            "doc": null
          }
        ],
        "size": 40,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_PositionKeyframe"
        }
      }
    },
    "Animation_ProcessController": {
      "function": {
        "analysis": {
          "en": {
            "address": 4272272,
            "rva": 77968,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 2783,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4272752,
            "rva": 78448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 2783,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4272752,
            "rva": 78448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 2783,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "controller_data",
              "type": "int32_t*"
            },
            {
              "name": "state_data",
              "type": "int32_t*"
            },
            {
              "name": "frame_count",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 18 83 FB FF 0F 84 ??",
          "match_offset": -12
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 181,
          "symbol_index": 181,
          "accessor": "DTTR_PCDOGS_F_Animation_ProcessController",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_PROCESS_CONTROLLER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_PROCESS_CONTROLLER"
        }
      }
    },
    "Animation_ProcessVertexColor": {
      "function": {
        "analysis": {
          "en": {
            "address": 4273216,
            "rva": 78912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4273696,
            "rva": 79392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4273696,
            "rva": 79392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "color_controller",
              "type": "Animation_VertexColorController*"
            },
            {
              "name": "mesh_node",
              "type": "Mesh_NodeExtended*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 0C 57 85 D2 0F 84 ??",
          "match_offset": -17
        },
        "docs": "Samples a vertex-color animation controller and writes clamped RGB bytes to the Mesh_RuntimeVertex buffer. Keyframes store signed RGB deltas and Q12 interpolation factors; target rows provide vertex index, optional frame position, and base RGB.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 183,
          "symbol_index": 183,
          "accessor": "DTTR_PCDOGS_F_Animation_ProcessVertexColor",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_PROCESS_VERTEX_COLOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_PROCESS_VERTEX_COLOR"
        }
      }
    },
    "Animation_QueueStateChange": {
      "function": {
        "analysis": {
          "en": {
            "address": 4252784,
            "rva": 58480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Animation_QueueStateChange_AnimQueuedStateChange"
                },
                "instr_offset": 9,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Animation_QueueStateChange_Count"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 855,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1075,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2089,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateActorState"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4253264,
            "rva": 58960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Animation_QueueStateChange_AnimQueuedStateChange"
                },
                "instr_offset": 9,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Animation_QueueStateChange_Count"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 858,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2092,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateActorState"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4253264,
            "rva": 58960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Animation_QueueStateChange_AnimQueuedStateChange"
                },
                "instr_offset": 9,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Animation_QueueStateChange_Count"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 858,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2092,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 2123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateActorState"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "anim_state",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Animation_QueueStateChange_AnimQueuedStateChange"
            },
            "instr_offset": 9,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Animation_QueueStateChange_Count"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 8B 4C 24 04 89",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 112,
          "symbol_index": 112,
          "accessor": "DTTR_PCDOGS_F_Animation_QueueStateChange",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ANIMATION_QUEUE_STATE_CHANGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ANIMATION_QUEUE_STATE_CHANGE"
        }
      }
    },
    "Animation_QueueStateChange_AnimQueuedStateChange": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551144,
            "rva": 356840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 9,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559480,
            "rva": 365176,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 9,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559464,
            "rva": 365160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 9,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Animation_QueueStateChange"
            },
            "instr_offset": 9,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 350,
          "symbol_index": 350,
          "accessor": "DTTR_PCDOGS_D_Animation_QueueStateChange_AnimQueuedStateChange",
          "sdk_id": "DTTR_PCDOGS_DATA_ANIMATION_QUEUE_STATE_CHANGE_ANIM_QUEUED_STATE_CHANGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ANIMATION_QUEUE_STATE_CHANGE_ANIM_QUEUED_STATE_CHANGE"
        }
      }
    },
    "Animation_QueueStateChange_Count": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551184,
            "rva": 356880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559520,
            "rva": 365216,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559504,
            "rva": 365200,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Animation_QueueStateChange"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 351,
          "symbol_index": 351,
          "accessor": "DTTR_PCDOGS_D_Animation_QueueStateChange_Count",
          "sdk_id": "DTTR_PCDOGS_DATA_ANIMATION_QUEUE_STATE_CHANGE_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ANIMATION_QUEUE_STATE_CHANGE_COUNT"
        }
      }
    },
    "Animation_RotationKeyframe": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "timing_flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_QuaternionI16",
            "name": "quat",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "segment_flags",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_QuaternionI16",
            "name": "tangent_out",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Math_QuaternionI16",
            "name": "tangent_in",
            "offset": 24,
            "doc": null
          }
        ],
        "size": 32,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_RotationKeyframe"
        }
      }
    },
    "Animation_ScalarKeyframe": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "timing_flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "value",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "tangent_out",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "tangent_in",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_ScalarKeyframe"
        }
      }
    },
    "Animation_SplineChannel": {
      "type": {
        "members": [
          {
            "type": "void*",
            "name": "keyframe_table_or_minus_one_sentinel",
            "offset": 0,
            "doc": "Sampled spline keyframe table pointer, or exactly -1 for the constant/sentinel case. Sampled channels require a nonzero table pointer."
          },
          {
            "type": "int32_t",
            "name": "packed_first_key",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "keyframe_count_must_be_nonzero_when_sampled",
            "offset": 8,
            "doc": "Animation_CheckKeyframeActive indexes count - 1 on the sampled-channel path; a zero count is invalid for sampled channels."
          },
          {
            "type": "uint8_t",
            "name": "target_index",
            "offset": 9,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "channel_flags",
            "offset": 10,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_SplineChannel"
        }
      }
    },
    "Animation_StateTable": {
      "type": {
        "members": [
          {
            "type": "Animation_DataBlock*",
            "name": "anim_ptrs[43]",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 172,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_StateTable"
        }
      }
    },
    "Animation_VertexColorController": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "controller_type",
            "offset": 0,
            "doc": "Value 1 identifies vertex-color controllers."
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 1,
            "doc": "Bit 0x80 marks dirty/pending dispatch; low 3 bits select timing mode."
          },
          {
            "type": "uint16_t",
            "name": "signal_id",
            "offset": 2,
            "doc": "Signal id polled by Graphics_UpdateMeshCommandFlags, then used for controller updates."
          },
          {
            "type": "int32_t",
            "name": "sample_time_q12",
            "offset": 4,
            "doc": "Current Q12 playback sample time, advanced by mesh-command updates."
          },
          {
            "type": "uint32_t",
            "name": "playback_limit_q12",
            "offset": 8,
            "doc": "Q12 playback bound for sample_time_q12, used for clamping or wrapping."
          },
          {
            "type": "uint8_t",
            "name": "keyframe_count",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_0d",
            "offset": 13,
            "doc": "Alignment byte between keyframe_count and vertex_count; no documented semantic use in vertex-color paths."
          },
          {
            "type": "int16_t",
            "name": "vertex_count",
            "offset": 14,
            "doc": null
          },
          {
            "type": "Animation_VertexColorTarget*",
            "name": "target_array",
            "offset": 16,
            "doc": "Vertex-color target array with vertex index, frame position, and base RGB bytes."
          },
          {
            "type": "Animation_VertexColorKeyframe*",
            "name": "keyframe_array",
            "offset": 20,
            "doc": "Signed RGB delta keyframe array, sampled by Animation_ProcessVertexColor."
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_VertexColorController"
        }
      }
    },
    "Animation_VertexColorKeyframe": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "delta_r",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "delta_g",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "delta_b",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "frame_number",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "inv_frame_delta_q12",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_VertexColorKeyframe"
        }
      }
    },
    "Animation_VertexColorTarget": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "vertex_index",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "frame_offset",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "base_r",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "base_g",
            "offset": 5,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "base_b",
            "offset": 6,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_07",
            "offset": 7,
            "doc": "Reserved byte after base RGB used by Animation_ProcessVertexColor target reads."
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_VertexColorTarget"
        }
      }
    },
    "Animation_VisibilityKeyframe": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "timing_and_visibility",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Animation_VisibilityKeyframe"
        }
      }
    },
    "Audio_AILHDigitalDriver": {
      "type": {
        "source_type": "void*",
        "unstable": false,
        "kind": "type_alias",
        "docs": "Miles digital-driver handle stored by audio initialization and used by playback guards.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Audio_AILHDigitalDriver"
        }
      }
    },
    "Audio_AILHSample": {
      "type": {
        "source_type": "void*",
        "unstable": true,
        "kind": "type_alias",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Audio_AILHSample"
        }
      }
    },
    "Audio_AILHStream": {
      "type": {
        "source_type": "void*",
        "unstable": true,
        "kind": "type_alias",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Audio_AILHStream"
        }
      }
    },
    "Audio_AllocateSoundSlot": {
      "function": {
        "analysis": {
          "en": {
            "address": 4460384,
            "rva": 266080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_AllocateSoundSlot_Reserved"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4465936,
            "rva": 271632,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_AllocateSoundSlot_Reserved"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4465952,
            "rva": 271648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_AllocateSoundSlot_Reserved"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "sound_def",
              "type": "Audio_SoundDefinition*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_AllocateSoundSlot_Reserved"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "74 ?? 6A 00 6A 08 BE ?? ?? ?? ??",
          "match_offset": -11
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 587,
          "symbol_index": 587,
          "accessor": "DTTR_PCDOGS_F_Audio_AllocateSoundSlot",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_ALLOCATE_SOUND_SLOT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_ALLOCATE_SOUND_SLOT"
        }
      }
    },
    "Audio_AllocateSoundSlot_Reserved": {
      "data": {
        "analysis": {
          "en": {
            "address": 4837944,
            "rva": 643640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848176,
            "rva": 653872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4847600,
            "rva": 653296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_AllocateSoundSlot"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Audio_SoundEntry",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_AllocateSoundSlot",
          "instr_offset": 17,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Ninth Audio_SoundEntry at sound_entries[8], reserved for Audio_SoundDefinition flags bit 0x80 before being linked into the active list.",
        "sdk": {
          "id": 702,
          "symbol_index": 702,
          "accessor": "DTTR_PCDOGS_D_Audio_AllocateSoundSlot_Reserved",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_ALLOCATE_SOUND_SLOT_RESERVED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_ALLOCATE_SOUND_SLOT_RESERVED"
        }
      }
    },
    "Audio_CalculateSpatialVolumeAndPan": {
      "function": {
        "analysis": {
          "en": {
            "address": 4462016,
            "rva": 267712,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 636,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4467568,
            "rva": 273264,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 636,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4467584,
            "rva": 273280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 636,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint8_t",
          "params": [
            {
              "name": "source_pos",
              "type": "Math_Vec3I32*",
              "docs": "Nullable source/world position; null treats distance and x/z delta as zero."
            },
            {
              "name": "audible_radius",
              "type": "uint32_t",
              "docs": "Maximum audible distance. Sources at or beyond this radius write volume 0 and return 0."
            },
            {
              "name": "out_volume_q12",
              "type": "int32_t*",
              "docs": "Optional 0..0x1000 attenuation output; null skips volume calculation."
            },
            {
              "name": "out_pan_angle",
              "type": "int16_t*",
              "docs": "Output 12-bit pan/facing angle relative to player_facing_angle."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 45 10 85 C0 0F 84 ??",
          "match_offset": -28
        },
        "docs": "Computes positional-audio attenuation and pan from source_pos relative to the selected listener/camera position. Game_FrameTransitionFlags bit 0x10 selects Audio_ListenerCameraPos_Flag10Set when set and Audio_ListenerCameraPos_Flag10Clear when clear.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 591,
          "symbol_index": 591,
          "accessor": "DTTR_PCDOGS_F_Audio_CalculateSpatialVolumeAndPan",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_CALCULATE_SPATIAL_VOLUME_AND_PAN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_CALCULATE_SPATIAL_VOLUME_AND_PAN"
        }
      }
    },
    "Audio_CheckCooldownExpired": {
      "function": {
        "analysis": {
          "en": {
            "address": 4416368,
            "rva": 222064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerCollisionSound"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4421424,
            "rva": 227120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerCollisionSound"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4421392,
            "rva": 227088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerCollisionSound"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "cooldown_entries",
              "type": "int32_t*"
            },
            {
              "name": "other_actor",
              "type": "Actor_State*"
            },
            {
              "name": "sound_key",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? B0 01 5E C3 8B 0D ??",
          "match_offset": -32
        },
        "docs": "Checks whether a collision sound cooldown entry for otherActor/soundKey has expired.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 443,
          "symbol_index": 443,
          "accessor": "DTTR_PCDOGS_F_Audio_CheckCooldownExpired",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_CHECK_COOLDOWN_EXPIRED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_CHECK_COOLDOWN_EXPIRED"
        }
      }
    },
    "Audio_CheckStreamStatus": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425472,
            "rva": 231168,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_IsStreamPlaying"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430528,
            "rva": 236224,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_IsStreamPlaying"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4430496,
            "rva": 236192,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_IsStreamPlaying"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "stream_handle_ptr",
              "type": "Audio_AILHStream*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 85 C0 74 ?? 50 E8 ??",
          "match_offset": 0
        },
        "docs": "Returns nonzero when stream_handle_ptr is non-null and the pointed Miles stream is currently playing.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 469,
          "symbol_index": 469,
          "accessor": "DTTR_PCDOGS_F_Audio_CheckStreamStatus",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_CHECK_STREAM_STATUS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_CHECK_STREAM_STATUS"
        }
      }
    },
    "Audio_CloseMusicStream": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425104,
            "rva": 230800,
            "image_base": 4194304
          },
          "eu": {
            "address": 4430160,
            "rva": 235856,
            "image_base": 4194304
          },
          "sc": {
            "address": 4430128,
            "rva": 235824,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? 6A 01 50 FF 15 ?? ?? ?? ?? A1",
          "match_offset": 0
        },
        "docs": "Pauses and closes the active Miles music stream, clears music_stream_handle, and decrements open_stream_count; residual Miles/counter return is ignored.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 461,
          "symbol_index": 461,
          "accessor": "DTTR_PCDOGS_F_Audio_CloseMusicStream",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_CLOSE_MUSIC_STREAM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_CLOSE_MUSIC_STREAM"
        }
      }
    },
    "Audio_DigitalDriverAnchor": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4424256,
            "rva": 229952,
            "image_base": 4194304
          },
          "eu": {
            "address": 4429312,
            "rva": 235008,
            "image_base": 4194304
          },
          "sc": {
            "address": 4429280,
            "rva": 234976,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "A1 ?? ?? ?? ?? 6A 7F 50 FF 15"
      }
    },
    "Audio_FadeInMusic": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425312,
            "rva": 231008,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "BE 49 00 6A 0F 50 E8 ??",
          "match_offset": -13
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 465,
          "symbol_index": 465,
          "accessor": "DTTR_PCDOGS_F_Audio_FadeInMusic",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_FADE_IN_MUSIC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_FADE_IN_MUSIC"
        }
      }
    },
    "Audio_FadeOutMusic": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425264,
            "rva": 230960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FadeOutMusic_SoundSystemFlags"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2419,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430320,
            "rva": 236016,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FadeOutMusic_SoundSystemFlags"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2419,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4430288,
            "rva": 235984,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FadeOutMusic_SoundSystemFlags"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2419,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_FadeOutMusic_SoundSystemFlags"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "F6 05 ?? ?? ?? ?? 06 75 ?? 66 A1 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 464,
          "symbol_index": 464,
          "accessor": "DTTR_PCDOGS_F_Audio_FadeOutMusic",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_FADE_OUT_MUSIC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_FADE_OUT_MUSIC"
        }
      }
    },
    "Audio_FadeOutMusic_SoundSystemFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832926,
            "rva": 638622,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FadeOutMusic"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841822,
            "rva": 647518,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FadeOutMusic"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841806,
            "rva": 647502,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FadeOutMusic"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_FadeOutMusic"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_FadeOutMusic",
          "instr_offset": 0,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Byte-sized audio/music state flags used by music fade/transition routines.",
        "sdk": {
          "id": 650,
          "symbol_index": 650,
          "accessor": "DTTR_PCDOGS_D_Audio_FadeOutMusic_SoundSystemFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_FADE_OUT_MUSIC_SOUND_SYSTEM_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_FADE_OUT_MUSIC_SOUND_SYSTEM_FLAGS"
        }
      }
    },
    "Audio_FindSoundByType": {
      "function": {
        "analysis": {
          "en": {
            "address": 4460752,
            "rva": 266448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundBlockOrWait"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4466304,
            "rva": 272000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundBlockOrWait"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4466320,
            "rva": 272016,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundBlockOrWait"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "slot_index",
              "type": "int32_t"
            },
            {
              "name": "sound_def",
              "type": "Audio_SoundDefinition*"
            },
            {
              "name": "position",
              "type": "Math_Vec3I32*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 85 DB 75 ?? 8B 35 ?? ?? ?? ??",
          "match_offset": -15
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 588,
          "symbol_index": 588,
          "accessor": "DTTR_PCDOGS_F_Audio_FindSoundByType",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_FIND_SOUND_BY_TYPE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_FIND_SOUND_BY_TYPE"
        }
      }
    },
    "Audio_FreeSoundSlot": {
      "function": {
        "analysis": {
          "en": {
            "address": 4460096,
            "rva": 265792,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_ActiveSoundList"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_Entries"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_ListPtr"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_Tail"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StopSound"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4465648,
            "rva": 271344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_ActiveSoundList"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_Entries"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_ListPtr"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_Tail"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StopSound"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4465664,
            "rva": 271360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_ActiveSoundList"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_Entries"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_ListPtr"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_FreeSoundSlot_Tail"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StopSound"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "slot_index",
              "type": "int32_t"
            },
            {
              "name": "clear_resource_flag",
              "type": "BOOL"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_FreeSoundSlot_Entries"
            },
            "instr_offset": 10,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_FreeSoundSlot_ActiveSoundList"
            },
            "instr_offset": 51,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_FreeSoundSlot_Tail"
            },
            "instr_offset": 74,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_FreeSoundSlot_ListPtr"
            },
            "instr_offset": 92,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "75 ?? 8B 48 04 89 0D ??",
          "match_offset": -46
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 585,
          "symbol_index": 585,
          "accessor": "DTTR_PCDOGS_F_Audio_FreeSoundSlot",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_FREE_SOUND_SLOT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_FREE_SOUND_SLOT"
        }
      }
    },
    "Audio_FreeSoundSlot_ActiveSoundList": {
      "data": {
        "analysis": {
          "en": {
            "address": 4837992,
            "rva": 643688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848224,
            "rva": 653920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4847648,
            "rva": 653344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_FreeSoundSlot"
            },
            "instr_offset": 51,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Audio_SoundEntry*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_FreeSoundSlot",
          "instr_offset": 51,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Head pointer for the doubly linked active Audio_SoundEntry list maintained by Audio_AllocateSoundSlot and Audio_FreeSoundSlot.",
        "sdk": {
          "id": 703,
          "symbol_index": 703,
          "accessor": "DTTR_PCDOGS_D_Audio_FreeSoundSlot_ActiveSoundList",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_FREE_SOUND_SLOT_ACTIVE_SOUND_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_FREE_SOUND_SLOT_ACTIVE_SOUND_LIST"
        }
      }
    },
    "Audio_FreeSoundSlot_Entries": {
      "data": {
        "analysis": {
          "en": {
            "address": 4837560,
            "rva": 643256,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4847792,
            "rva": 653488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4847216,
            "rva": 652912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_FreeSoundSlot"
            },
            "instr_offset": 10,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Audio_SoundEntry",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_FreeSoundSlot",
          "instr_offset": 10,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Base of the active and free sound-entry pool; Audio_AllocateSoundSlot computes slot indices from this base.",
        "sdk": {
          "id": 701,
          "symbol_index": 701,
          "accessor": "DTTR_PCDOGS_D_Audio_FreeSoundSlot_Entries",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_FREE_SOUND_SLOT_ENTRIES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_FREE_SOUND_SLOT_ENTRIES"
        }
      }
    },
    "Audio_FreeSoundSlot_ListPtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838000,
            "rva": 643696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848232,
            "rva": 653928,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4847656,
            "rva": 653352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_FreeSoundSlot"
            },
            "instr_offset": 92,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Audio_SoundEntry*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_FreeSoundSlot",
          "instr_offset": 92,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Head pointer for the free Audio_SoundEntry list read by Audio_AllocateSoundSlot and replenished by Audio_FreeSoundSlot.",
        "sdk": {
          "id": 705,
          "symbol_index": 705,
          "accessor": "DTTR_PCDOGS_D_Audio_FreeSoundSlot_ListPtr",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_FREE_SOUND_SLOT_LIST_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_FREE_SOUND_SLOT_LIST_PTR"
        }
      }
    },
    "Audio_FreeSoundSlot_Tail": {
      "data": {
        "analysis": {
          "en": {
            "address": 4837996,
            "rva": 643692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848228,
            "rva": 653924,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4847652,
            "rva": 653348,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_FreeSoundSlot"
            },
            "instr_offset": 74,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Audio_SoundEntry*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_FreeSoundSlot",
          "instr_offset": 74,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Tail pointer for the active Audio_SoundEntry list; new allocated entries are appended here.",
        "sdk": {
          "id": 704,
          "symbol_index": 704,
          "accessor": "DTTR_PCDOGS_D_Audio_FreeSoundSlot_Tail",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_FREE_SOUND_SLOT_TAIL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_FREE_SOUND_SLOT_TAIL"
        }
      }
    },
    "Audio_InitializeLevelAudio": {
      "function": {
        "analysis": {
          "en": {
            "address": 4424256,
            "rva": 229952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 344,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 863,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4429312,
            "rva": 235008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 863,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 949,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 982,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4429280,
            "rva": 234976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 863,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 949,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 982,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "6A 7F 50 FF 15 ?? ?? ?? ?? C3 90",
          "match_offset": -5
        },
        "docs": "Initializes level audio playback state using the active Miles digital driver.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 8,
          "symbol_index": 8,
          "accessor": "DTTR_PCDOGS_F_Audio_InitializeLevelAudio",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_INITIALIZE_LEVEL_AUDIO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_INITIALIZE_LEVEL_AUDIO"
        }
      }
    },
    "Audio_InitializeSystem": {
      "function": {
        "analysis": {
          "en": {
            "address": 4423616,
            "rva": 229312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_InitializeSystem_DigitalDriver"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_InitializeSystem_Emulated"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_MusicFadeFrameCount"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4428672,
            "rva": 234368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_InitializeSystem_DigitalDriver"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_InitializeSystem_Emulated"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_MusicFadeFrameCount"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4428640,
            "rva": 234336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_InitializeSystem_DigitalDriver"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_InitializeSystem_Emulated"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_MusicFadeFrameCount"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_InitializeSystem_DigitalDriver"
            },
            "instr_offset": 127,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_InitializeSystem_Emulated"
            },
            "instr_offset": 154,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_MusicFadeFrameCount"
            },
            "instr_offset": 279,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 55 56 57 FF 15 ?? ?? ?? ?? 85 C0 0F 84 ?? ?? ?? ?? 8B 35",
          "match_offset": -5
        },
        "docs": "Initializes the Miles audio system and opens the digital driver handle used by game audio playback.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 4,
          "symbol_index": 4,
          "accessor": "DTTR_PCDOGS_F_Audio_InitializeSystem",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_INITIALIZE_SYSTEM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_INITIALIZE_SYSTEM"
        }
      }
    },
    "Audio_InitializeSystem_DigitalDriver": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832728,
            "rva": 638424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841628,
            "rva": 647324,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841612,
            "rva": 647308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_InitializeSystem"
            },
            "instr_offset": 127,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "Audio_AILHDigitalDriver",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_InitializeSystem",
          "instr_offset": 127,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Miles digital driver handle opened by AIL_waveOutOpen and cleared by Audio_ShutdownSystem.",
        "sdk": {
          "id": 7,
          "symbol_index": 7,
          "accessor": "DTTR_PCDOGS_D_Audio_InitializeSystem_DigitalDriver",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_INITIALIZE_SYSTEM_DIGITAL_DRIVER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_INITIALIZE_SYSTEM_DIGITAL_DRIVER"
        }
      }
    },
    "Audio_InitializeSystem_Emulated": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526012,
            "rva": 331708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534200,
            "rva": 339896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534200,
            "rva": 339896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_InitializeSystem"
            },
            "instr_offset": 154,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 238,
          "symbol_index": 238,
          "accessor": "DTTR_PCDOGS_D_Audio_InitializeSystem_Emulated",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_INITIALIZE_SYSTEM_EMULATED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_INITIALIZE_SYSTEM_EMULATED"
        }
      }
    },
    "Audio_IsStreamPlaying": {
      "function": {
        "analysis": {
          "en": {
            "address": 4424880,
            "rva": 230576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_CheckStreamStatus"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4429936,
            "rva": 235632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_CheckStreamStatus"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4429904,
            "rva": 235600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_CheckStreamStatus"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "stream_handle_ptr",
              "type": "Audio_AILHStream*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8B 00 85 C0 74 ?? 50 FF 15 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 456,
          "symbol_index": 456,
          "accessor": "DTTR_PCDOGS_F_Audio_IsStreamPlaying",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_IS_STREAM_PLAYING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_IS_STREAM_PLAYING"
        }
      }
    },
    "Audio_ListenerCameraPos_Flag10Clear": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439772,
            "rva": 2245468,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6450012,
            "rva": 2255708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449436,
            "rva": 2255132,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_PlaySoundDefinition3D"
            },
            "instr_offset": 103,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Math_Vec3I32",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_PlaySoundDefinition3D",
          "instr_offset": 103,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Camera/listener position vector selected by positional-audio panning when Game_FrameTransitionFlags bit 0x10 is clear.",
        "sdk": {
          "id": 739,
          "symbol_index": 739,
          "accessor": "DTTR_PCDOGS_D_Audio_ListenerCameraPos_Flag10Clear",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_LISTENER_CAMERA_POS_FLAG10_CLEAR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_LISTENER_CAMERA_POS_FLAG10_CLEAR"
        }
      }
    },
    "Audio_ListenerCameraPos_Flag10Set": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439760,
            "rva": 2245456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 115,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6450000,
            "rva": 2255696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 115,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449424,
            "rva": 2255120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 115,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 115,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Math_Vec3I32",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Checkers_UpdateStateMachine",
          "instr_offset": 115,
          "addr_offset": 6,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Camera/listener position vector selected by positional-audio panning when Game_FrameTransitionFlags bit 0x10 is set.",
        "sdk": {
          "id": 738,
          "symbol_index": 738,
          "accessor": "DTTR_PCDOGS_D_Audio_ListenerCameraPos_Flag10Set",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_LISTENER_CAMERA_POS_FLAG10_SET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_LISTENER_CAMERA_POS_FLAG10_SET"
        }
      }
    },
    "Audio_MusicFadeFrameCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4546248,
            "rva": 351944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 102,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554584,
            "rva": 360280,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 102,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554568,
            "rva": 360264,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 102,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_TriggerMusicTransition"
            },
            "instr_offset": 102,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Audio_InitializeSystem"
            },
            "instr_offset": 279,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 337,
          "symbol_index": 337,
          "accessor": "DTTR_PCDOGS_D_Audio_MusicFadeFrameCount",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_MUSIC_FADE_FRAME_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_MUSIC_FADE_FRAME_COUNT"
        }
      }
    },
    "Audio_OpenStream": {
      "function": {
        "analysis": {
          "en": {
            "address": 4424768,
            "rva": 230464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_OpenStream_MusicPath"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_OpenStream_PKGBasePath"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayMusicStream"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4429824,
            "rva": 235520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_OpenStream_MusicPath"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_OpenStream_PKGBasePath"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayMusicStream"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4429792,
            "rva": 235488,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_OpenStream_MusicPath"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_OpenStream_PKGBasePath"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayMusicStream"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "stream_record",
              "type": "int32_t*",
              "docs": "Record whose first dword receives the Audio_AILHStream; bytes at +4 hold the music filename."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_OpenStream_MusicPath"
            },
            "instr_offset": 43,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_OpenStream_PKGBasePath"
            },
            "instr_offset": 34,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 81 EC 04",
          "match_offset": 0
        },
        "docs": "Open streamRecord[0] from the music filename stored at streamRecord+4 under the data/music directory; clears the handle when audio is unavailable or the filename is empty.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 9,
          "symbol_index": 9,
          "accessor": "DTTR_PCDOGS_F_Audio_OpenStream",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_OPEN_STREAM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_OPEN_STREAM"
        }
      }
    },
    "Audio_OpenStream_MusicPath": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526060,
            "rva": 331756,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_OpenStream"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534248,
            "rva": 339944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_OpenStream"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534248,
            "rva": 339944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_OpenStream"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_OpenStream"
            },
            "instr_offset": 43,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "char",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_OpenStream",
          "instr_offset": 43,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First byte/base of the data/music path format literal used by Audio_OpenStream.",
        "sdk": {
          "id": 240,
          "symbol_index": 240,
          "accessor": "DTTR_PCDOGS_D_Audio_OpenStream_MusicPath",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_OPEN_STREAM_MUSIC_PATH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_OPEN_STREAM_MUSIC_PATH"
        }
      }
    },
    "Audio_OpenStream_PKGBasePath": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505728,
            "rva": 2311424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_OpenStream"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6516992,
            "rva": 2322688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_OpenStream"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6516416,
            "rva": 2322112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_OpenStream"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_OpenStream"
            },
            "instr_offset": 34,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "char[0x104]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_OpenStream",
          "instr_offset": 34,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Mutable NUL-terminated package base path buffer used to build package and data/music stream paths.",
        "sdk": {
          "id": 15,
          "symbol_index": 15,
          "accessor": "DTTR_PCDOGS_D_Audio_OpenStream_PKGBasePath",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_OPEN_STREAM_PKG_BASE_PATH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_OPEN_STREAM_PKG_BASE_PATH"
        }
      }
    },
    "Audio_PauseAllSounds": {
      "function": {
        "analysis": {
          "en": {
            "address": 4462400,
            "rva": 268096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2447,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4467952,
            "rva": 273648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2447,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4467968,
            "rva": 273664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2447,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 57 33 FF BE ?? ?? ?? ?? 57",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 592,
          "symbol_index": 592,
          "accessor": "DTTR_PCDOGS_F_Audio_PauseAllSounds",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_PAUSE_ALL_SOUNDS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_PAUSE_ALL_SOUNDS"
        }
      }
    },
    "Audio_PauseStream": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425040,
            "rva": 230736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430096,
            "rva": 235792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4430064,
            "rva": 235760,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? 6A 01 50 FF 15 ?? ?? ?? ?? C3",
          "match_offset": 0
        },
        "docs": "Pauses the active Miles music stream when one is published.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 459,
          "symbol_index": 459,
          "accessor": "DTTR_PCDOGS_F_Audio_PauseStream",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_PAUSE_STREAM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_PAUSE_STREAM"
        }
      }
    },
    "Audio_PlayLevelSoundIndexAtPosition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4210304,
            "rva": 16000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundIndex"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_UpdateTimedEvents"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4210752,
            "rva": 16448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundIndex"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_UpdateTimedEvents"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4210752,
            "rva": 16448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundIndex"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_UpdateTimedEvents"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "level_sound_index",
              "type": "int32_t"
            },
            {
              "name": "position",
              "type": "Math_Vec3I32*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 56 85",
          "match_offset": 0
        },
        "docs": "Resolves a level-local sound index through current_level_data->sound_definition_list, then forwards to Audio_PlaySoundDefinition3D.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 51,
          "symbol_index": 51,
          "accessor": "DTTR_PCDOGS_F_Audio_PlayLevelSoundIndexAtPosition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_PLAY_LEVEL_SOUND_INDEX_AT_POSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_PLAY_LEVEL_SOUND_INDEX_AT_POSITION"
        }
      }
    },
    "Audio_PlayLevelSoundIndexAtPositionAnchor": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4210304,
            "rva": 16000,
            "image_base": 4194304
          },
          "eu": {
            "address": 4210752,
            "rva": 16448,
            "image_base": 4194304
          },
          "sc": {
            "address": 4210752,
            "rva": 16448,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "8B 0D ?? ?? ?? ?? 56 85"
      }
    },
    "Audio_PlayMusicStream": {
      "function": {
        "analysis": {
          "en": {
            "address": 4424960,
            "rva": 230656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_OpenStream"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetStreamVolume"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430016,
            "rva": 235712,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_OpenStream"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetStreamVolume"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4429984,
            "rva": 235680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_OpenStream"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetStreamVolume"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "stream_record",
              "type": "int32_t*"
            },
            {
              "name": "volume",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 85 F6 74 ?? 56 E8 ?? ?? ?? ?? 8B 06 83 C4 04 A3 ?? ?? ?? ?? A1 ?? ?? ?? ?? 5E 85 C0 74 ?? 8B 4C 24 08 51 E8 ?? ?? ?? ??",
          "match_offset": 0
        },
        "docs": "Optionally opens streamRecord, publishes its handle as the active music stream, sets volume, starts playback, and sets the stream loop count to zero.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 458,
          "symbol_index": 458,
          "accessor": "DTTR_PCDOGS_F_Audio_PlayMusicStream",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_PLAY_MUSIC_STREAM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_PLAY_MUSIC_STREAM"
        }
      }
    },
    "Audio_PlaySoundDefinition3D": {
      "function": {
        "analysis": {
          "en": {
            "address": 4460240,
            "rva": 265936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ListenerCameraPos_Flag10Clear"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyGroundReaction"
                },
                "instr_offset": 781,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundBlockOrWait"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4465792,
            "rva": 271488,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ListenerCameraPos_Flag10Clear"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyGroundReaction"
                },
                "instr_offset": 781,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundBlockOrWait"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 447,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4465808,
            "rva": 271504,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ListenerCameraPos_Flag10Clear"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_AllocateSoundSlot"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyGroundReaction"
                },
                "instr_offset": 781,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPlaySoundBlockOrWait"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 447,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "sound_def",
              "type": "Audio_SoundDefinition*"
            },
            {
              "name": "position_or_actor_position_ptr",
              "type": "Math_Vec3I32*",
              "docs": "Position pointer for 3D playback. Actor sound-node calls often pass &actor->position_x, but script/cutscene paths may pass non-actor globals."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_ListenerCameraPos_Flag10Clear"
            },
            "instr_offset": 103,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 83 3E 00 74 ?? A1 ?? ?? ?? ??",
          "match_offset": 0
        },
        "docs": "Starts playback from an already-resolved Audio_SoundDefinition. Script/dialogue paths can call this directly and bypass Audio_PlayLevelSoundIndexAtPosition.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 586,
          "symbol_index": 586,
          "accessor": "DTTR_PCDOGS_F_Audio_PlaySoundDefinition3D",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_PLAY_SOUND_DEFINITION3_D",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_PLAY_SOUND_DEFINITION3_D"
        }
      }
    },
    "Audio_ProcessMusicFade": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425504,
            "rva": 231200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ProcessMusicFade_ScreenFadeCounter"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PauseStream"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayMusicStream"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetStreamVolume"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetMusicVolume"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430560,
            "rva": 236256,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ProcessMusicFade_ScreenFadeCounter"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PauseStream"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayMusicStream"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetStreamVolume"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetMusicVolume"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4430528,
            "rva": 236224,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ProcessMusicFade_ScreenFadeCounter"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PauseStream"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayMusicStream"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetStreamVolume"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetMusicVolume"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_ProcessMusicFade_ScreenFadeCounter"
            },
            "instr_offset": 71,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 08 E8 ??",
          "match_offset": 0
        },
        "docs": "Processes one frame of music fade/stream state, advances the fade target, starts playback when allowed, pauses at zero volume, and recalculates stream volume.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 470,
          "symbol_index": 470,
          "accessor": "DTTR_PCDOGS_F_Audio_ProcessMusicFade",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_PROCESS_MUSIC_FADE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_PROCESS_MUSIC_FADE"
        }
      }
    },
    "Audio_ProcessMusicFade_ScreenFadeCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507277,
            "rva": 2312973,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518541,
            "rva": 2324237,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517965,
            "rva": 2323661,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_ProcessMusicFade"
            },
            "instr_offset": 71,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 821,
          "symbol_index": 821,
          "accessor": "DTTR_PCDOGS_D_Audio_ProcessMusicFade_ScreenFadeCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_PROCESS_MUSIC_FADE_SCREEN_FADE_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_PROCESS_MUSIC_FADE_SCREEN_FADE_COUNTER"
        }
      }
    },
    "Audio_ProcessSoundQueue": {
      "function": {
        "analysis": {
          "en": {
            "address": 4461120,
            "rva": 266816,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ProcessSoundQueue_PlaybackRateTable"
                },
                "instr_offset": 498,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CalculateSpatialVolumeAndPan"
                },
                "instr_offset": 636,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSampleVolume"
                },
                "instr_offset": 686,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 841,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_IsGameComplete"
                },
                "instr_offset": 793,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3999,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4466672,
            "rva": 272368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ProcessSoundQueue_PlaybackRateTable"
                },
                "instr_offset": 498,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CalculateSpatialVolumeAndPan"
                },
                "instr_offset": 636,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSampleVolume"
                },
                "instr_offset": 686,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 841,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_IsGameComplete"
                },
                "instr_offset": 793,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 394,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3999,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4466688,
            "rva": 272384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ProcessSoundQueue_PlaybackRateTable"
                },
                "instr_offset": 498,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CalculateSpatialVolumeAndPan"
                },
                "instr_offset": 636,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSampleVolume"
                },
                "instr_offset": 686,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 841,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_IsGameComplete"
                },
                "instr_offset": 793,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 394,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3999,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_ProcessSoundQueue_PlaybackRateTable"
            },
            "instr_offset": 498,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 83 EC 18",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 590,
          "symbol_index": 590,
          "accessor": "DTTR_PCDOGS_F_Audio_ProcessSoundQueue",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_PROCESS_SOUND_QUEUE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_PROCESS_SOUND_QUEUE"
        }
      }
    },
    "Audio_ProcessSoundQueue_PlaybackRateTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4837536,
            "rva": 643232,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 498,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4847768,
            "rva": 653464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 498,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4847192,
            "rva": 652888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 498,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_ProcessSoundQueue"
            },
            "instr_offset": 498,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint16_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_ProcessSoundQueue",
          "instr_offset": 498,
          "addr_offset": 4,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First halfword/base of the sound pitch/playback-rate cache used before AIL_set_sample_playback_rate.",
        "sdk": {
          "id": 700,
          "symbol_index": 700,
          "accessor": "DTTR_PCDOGS_D_Audio_ProcessSoundQueue_PlaybackRateTable",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_PROCESS_SOUND_QUEUE_PLAYBACK_RATE_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_PROCESS_SOUND_QUEUE_PLAYBACK_RATE_TABLE"
        }
      }
    },
    "Audio_ResetMusicState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425392,
            "rva": 231088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ResetMusicState_SelectedStreamRecord"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430448,
            "rva": 236144,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ResetMusicState_SelectedStreamRecord"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4430416,
            "rva": 236112,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ResetMusicState_SelectedStreamRecord"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "stream_record",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_ResetMusicState_SelectedStreamRecord"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 A3 ?? ?? ?? ?? A0",
          "match_offset": 0
        },
        "docs": "Stores the selected music stream record pointer for the fade/playback path and clears the low nibble of sound_system_flags; the previous scalar return was flag status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 467,
          "symbol_index": 467,
          "accessor": "DTTR_PCDOGS_F_Audio_ResetMusicState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_RESET_MUSIC_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_RESET_MUSIC_STATE"
        }
      }
    },
    "Audio_ResetMusicState_SelectedStreamRecord": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832928,
            "rva": 638624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResetMusicState"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841824,
            "rva": 647520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResetMusicState"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841808,
            "rva": 647504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResetMusicState"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_ResetMusicState"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_ResetMusicState",
          "instr_offset": 4,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Selected music stream record pointer stored by Audio_ResetMusicState and later passed to Audio_PlayMusicStream by Audio_ProcessMusicFade.",
        "sdk": {
          "id": 648,
          "symbol_index": 648,
          "accessor": "DTTR_PCDOGS_D_Audio_ResetMusicState_SelectedStreamRecord",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_RESET_MUSIC_STATE_SELECTED_STREAM_RECORD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_RESET_MUSIC_STATE_SELECTED_STREAM_RECORD"
        }
      }
    },
    "Audio_ResolveSoundDefAliases": {
      "function": {
        "analysis": {
          "en": {
            "address": 4451264,
            "rva": 256960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4456544,
            "rva": 262240,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 505,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 537,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 521,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 425,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 547,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4456512,
            "rva": 262208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 505,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 537,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 521,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 425,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "table",
              "type": "Audio_SoundDefinition*",
              "docs": "Sound-definition table whose alias entries are resolved in place."
            },
            {
              "name": "count",
              "type": "int32_t"
            },
            {
              "name": "enable",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "30 A8 01 74 0C D1 E8 ??",
          "match_offset": -34
        },
        "docs": "Resolves sound-definition alias entries whose sample_table_ptr slot holds a tagged index (table[idx >> 1]); all known callers pass sound-definition tables.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 536,
          "symbol_index": 536,
          "accessor": "DTTR_PCDOGS_F_Audio_ResolveSoundDefAliases",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_RESOLVE_SOUND_DEF_ALIASES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_RESOLVE_SOUND_DEF_ALIASES"
        }
      }
    },
    "Audio_ResumeAllSounds": {
      "function": {
        "analysis": {
          "en": {
            "address": 4462464,
            "rva": 268160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2053,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4468016,
            "rva": 273712,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 2393,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 4070,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 4561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 4951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 2525,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetDataPointer"
                },
                "instr_offset": 2693,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 729,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 3421,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 3655,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 3712,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 3722,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 3760,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_CreateMap"
                },
                "instr_offset": 713,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 5012,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 963,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 944,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 4995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 916,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2053,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4468032,
            "rva": 273728,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 2379,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 4019,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 4489,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 4879,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 2511,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetDataPointer"
                },
                "instr_offset": 2679,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 3389,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 3623,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 3680,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 3690,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 3728,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2686,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 3607,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 887,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_CreateMap"
                },
                "instr_offset": 703,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 4940,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 953,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 4923,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 906,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2053,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 57 33 FF BE ?? ?? ?? ?? 66",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 593,
          "symbol_index": 593,
          "accessor": "DTTR_PCDOGS_F_Audio_ResumeAllSounds",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_RESUME_ALL_SOUNDS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_RESUME_ALL_SOUNDS"
        }
      }
    },
    "Audio_ResumeStream": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425072,
            "rva": 230768,
            "image_base": 4194304
          },
          "eu": {
            "address": 4430128,
            "rva": 235824,
            "image_base": 4194304
          },
          "sc": {
            "address": 4430096,
            "rva": 235792,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? 6A 00 50",
          "match_offset": 0
        },
        "docs": "Resumes the active Miles music stream when one is published.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 460,
          "symbol_index": 460,
          "accessor": "DTTR_PCDOGS_F_Audio_ResumeStream",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_RESUME_STREAM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_RESUME_STREAM"
        }
      }
    },
    "Audio_SampleHandle": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "sound_id",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "volume",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "frequency",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int32_t*",
            "name": "sample_handle",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "status_flags",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Audio_SampleHandle"
        }
      }
    },
    "Audio_SampleHandleEntry": {
      "type": {
        "members": [
          {
            "type": "Audio_SampleHandleEntry*",
            "name": "prev_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Audio_SampleHandleEntry*",
            "name": "next_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t*",
            "name": "ail_handle",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Audio_SoundEntry*",
            "name": "sound_entry",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "additional_data",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Audio_SampleHandleEntry"
        }
      }
    },
    "Audio_SetEnabledFlag": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425184,
            "rva": 230880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_SetEnabledFlag_SystemFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430240,
            "rva": 235936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_SetEnabledFlag_SystemFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4430208,
            "rva": 235904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_SetEnabledFlag_SystemFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "enabled_flag",
              "type": "char"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_SetEnabledFlag_SystemFlag"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 55 8B EC 51",
          "match_offset": 0
        },
        "docs": "Stores the one-byte global audio enabled flag and returns the written value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 462,
          "symbol_index": 462,
          "accessor": "DTTR_PCDOGS_F_Audio_SetEnabledFlag",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_SET_ENABLED_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_SET_ENABLED_FLAG"
        }
      }
    },
    "Audio_SetEnabledFlag_SystemFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832720,
            "rva": 638416,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_SetEnabledFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534196,
            "rva": 339892,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_SetEnabledFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534196,
            "rva": 339892,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_SetEnabledFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_SetEnabledFlag"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_SetEnabledFlag",
          "instr_offset": 4,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Byte-sized audio enabled flag stored by Audio_SetEnabledFlag and read by Audio_GetEnabledFlag.",
        "sdk": {
          "id": 643,
          "symbol_index": 643,
          "accessor": "DTTR_PCDOGS_D_Audio_SetEnabledFlag_SystemFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_SET_ENABLED_FLAG_SYSTEM_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_SET_ENABLED_FLAG_SYSTEM_FLAG"
        }
      }
    },
    "Audio_SetMusicFadeTarget": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425200,
            "rva": 230896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_SetMusicFadeTarget_Volume"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FadeInMusic"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FadeOutMusic"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 284,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 449,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 993,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1847,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2433,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTriggerMusicFade"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430256,
            "rva": 235952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_SetMusicFadeTarget_Volume"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 937,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FadeOutMusic"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FadeOutMusic"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 284,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 449,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 993,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1847,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2433,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTriggerMusicFade"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 476,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4430224,
            "rva": 235920,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_SetMusicFadeTarget_Volume"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 937,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FadeOutMusic"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_FadeOutMusic"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 284,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 449,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 993,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1847,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2433,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTriggerMusicFade"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 476,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "target_volume_q12",
              "type": "int32_t"
            },
            {
              "name": "frame_count_minus_one",
              "type": "int16_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_SetMusicFadeTarget_Volume"
            },
            "instr_offset": 7,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 51 8B 45 08 0F BF 0D ?? ?? ?? ?? 85 C0 7D ??",
          "match_offset": 0
        },
        "docs": "Sets the music fade target volume and stores frameCountMinusOne + 1 as the fade frame count; negative targets scale the current target volume by -target/4096.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 463,
          "symbol_index": 463,
          "accessor": "DTTR_PCDOGS_F_Audio_SetMusicFadeTarget",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_SET_MUSIC_FADE_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_SET_MUSIC_FADE_TARGET"
        }
      }
    },
    "Audio_SetMusicFadeTarget_Volume": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832936,
            "rva": 638632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841832,
            "rva": 647528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841816,
            "rva": 647512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_SetMusicFadeTarget"
            },
            "instr_offset": 7,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int16_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_SetMusicFadeTarget",
          "instr_offset": 7,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Signed 16-bit target volume used by Audio_SetMusicFadeTarget and Audio_ProcessMusicFade.",
        "sdk": {
          "id": 653,
          "symbol_index": 653,
          "accessor": "DTTR_PCDOGS_D_Audio_SetMusicFadeTarget_Volume",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_SET_MUSIC_FADE_TARGET_VOLUME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_SET_MUSIC_FADE_TARGET_VOLUME"
        }
      }
    },
    "Audio_SetSamplePitch": {
      "function": {
        "analysis": {
          "en": {
            "address": 4424688,
            "rva": 230384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PauseAllSounds"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4429744,
            "rva": 235440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PauseAllSounds"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4429712,
            "rva": 235408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PauseAllSounds"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "slot_index",
              "type": "int32_t"
            },
            {
              "name": "pitch_scale_q12",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0F AC D0 0C 3B 81 ?? ??",
          "match_offset": -31
        },
        "docs": "Set a sound slot's sample playback rate to base_playback_rate * pitchScaleQ12 / 4096.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 455,
          "symbol_index": 455,
          "accessor": "DTTR_PCDOGS_F_Audio_SetSamplePitch",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_SET_SAMPLE_PITCH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_SET_SAMPLE_PITCH"
        }
      }
    },
    "Audio_SetSampleVolume": {
      "function": {
        "analysis": {
          "en": {
            "address": 4424608,
            "rva": 230304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 686,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4429664,
            "rva": 235360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 686,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4429632,
            "rva": 235328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 686,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "slot_index",
              "type": "int32_t"
            },
            {
              "name": "volume",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 8B 4C 24 08 C1 E9 ??",
          "match_offset": -19
        },
        "docs": "Set a sound slot's sample volume, scaling the game volume down to Miles' 0..128 range before calling AIL_set_sample_volume.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 454,
          "symbol_index": 454,
          "accessor": "DTTR_PCDOGS_F_Audio_SetSampleVolume",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_SET_SAMPLE_VOLUME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_SET_SAMPLE_VOLUME"
        }
      }
    },
    "Audio_SetStreamVolume": {
      "function": {
        "analysis": {
          "en": {
            "address": 4424912,
            "rva": 230608,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_SetStreamVolume_MusicStreamHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayMusicStream"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4429968,
            "rva": 235664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_SetStreamVolume_MusicStreamHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayMusicStream"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4429936,
            "rva": 235632,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_SetStreamVolume_MusicStreamHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_PlayMusicStream"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "volume",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_SetStreamVolume_MusicStreamHandle"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 85 C9 74 ?? 8B 44 24 04 C1",
          "match_offset": 0
        },
        "docs": "Set the current music stream volume, scaling the game volume down to Miles' 0..128 range before calling AIL_set_stream_volume.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 457,
          "symbol_index": 457,
          "accessor": "DTTR_PCDOGS_F_Audio_SetStreamVolume",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_SET_STREAM_VOLUME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_SET_STREAM_VOLUME"
        }
      }
    },
    "Audio_SetStreamVolume_MusicStreamHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832916,
            "rva": 638612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_SetStreamVolume"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841812,
            "rva": 647508,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_SetStreamVolume"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841796,
            "rva": 647492,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_SetStreamVolume"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_SetStreamVolume"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Audio_AILHStream",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_SetStreamVolume",
          "instr_offset": 0,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Active Miles music stream handle consumed by set-volume/play/pause/resume/close helpers.",
        "sdk": {
          "id": 647,
          "symbol_index": 647,
          "accessor": "DTTR_PCDOGS_D_Audio_SetStreamVolume_MusicStreamHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_SET_STREAM_VOLUME_MUSIC_STREAM_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_SET_STREAM_VOLUME_MUSIC_STREAM_HANDLE"
        }
      }
    },
    "Audio_ShutdownSystem": {
      "function": {
        "analysis": {
          "en": {
            "address": 4423984,
            "rva": 229680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_AILReleaseSampleHandle"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_AILShutdown"
                },
                "instr_offset": 55,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_ActiveWaveCount"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_ActiveWavesThemes"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_MusicTransitionTarget"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_OpenStreamCount"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_SoundSlot0SampleHandle"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4429040,
            "rva": 234736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_AILReleaseSampleHandle"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_AILShutdown"
                },
                "instr_offset": 55,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_ActiveWaveCount"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_ActiveWavesThemes"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_MusicTransitionTarget"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_OpenStreamCount"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_SoundSlot0SampleHandle"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4429008,
            "rva": 234704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_AILReleaseSampleHandle"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_AILShutdown"
                },
                "instr_offset": 55,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_ActiveWaveCount"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_ActiveWavesThemes"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_MusicTransitionTarget"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_OpenStreamCount"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ShutdownSystem_SoundSlot0SampleHandle"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_ShutdownSystem_ActiveWavesThemes"
            },
            "instr_offset": 74,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_ShutdownSystem_OpenStreamCount"
            },
            "instr_offset": 61,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_ShutdownSystem_SoundSlot0SampleHandle"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_ShutdownSystem_ActiveWaveCount"
            },
            "instr_offset": 66,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_ShutdownSystem_MusicTransitionTarget"
            },
            "instr_offset": 47,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_ShutdownSystem_AILReleaseSampleHandle"
            },
            "instr_offset": 10,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_ShutdownSystem_AILShutdown"
            },
            "instr_offset": 55,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? 53 8B",
          "match_offset": 0
        },
        "docs": "Shuts down Miles audio when audio_digital_driver is active, releasing non-null sample handles across Audio_SoundSlot entries, clearing slot sample/base-rate fields, calling AIL_shutdown, and clearing audio_digital_driver. Returns 0 when already inactive.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 5,
          "symbol_index": 5,
          "accessor": "DTTR_PCDOGS_F_Audio_ShutdownSystem",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_SHUTDOWN_SYSTEM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_SHUTDOWN_SYSTEM"
        }
      },
      "signature": {
        "analysis": {
          "en": {
            "address": 4423984,
            "rva": 229680,
            "image_base": 4194304
          },
          "eu": {
            "address": 4429040,
            "rva": 234736,
            "image_base": 4194304
          },
          "sc": {
            "address": 4429008,
            "rva": 234704,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? 53 8B 1D"
      }
    },
    "Audio_ShutdownSystem_AILReleaseSampleHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 27841664,
            "rva": 23647360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27849856,
            "rva": 23655552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27849856,
            "rva": 23655552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_ShutdownSystem"
            },
            "instr_offset": 10,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Miles AIL sample-handle release callsite/data reference used during audio shutdown.",
        "sdk": {
          "id": 980,
          "symbol_index": 980,
          "accessor": "DTTR_PCDOGS_D_Audio_ShutdownSystem_AILReleaseSampleHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_SHUTDOWN_SYSTEM_AIL_RELEASE_SAMPLE_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_SHUTDOWN_SYSTEM_AIL_RELEASE_SAMPLE_HANDLE"
        }
      }
    },
    "Audio_ShutdownSystem_AILShutdown": {
      "data": {
        "analysis": {
          "en": {
            "address": 27841668,
            "rva": 23647364,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 55,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27849860,
            "rva": 23655556,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 55,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27849860,
            "rva": 23655556,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 55,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_ShutdownSystem"
            },
            "instr_offset": 55,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 981,
          "symbol_index": 981,
          "accessor": "DTTR_PCDOGS_D_Audio_ShutdownSystem_AILShutdown",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_SHUTDOWN_SYSTEM_AIL_SHUTDOWN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_SHUTDOWN_SYSTEM_AIL_SHUTDOWN"
        }
      }
    },
    "Audio_ShutdownSystem_ActiveWaveCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832920,
            "rva": 638616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841816,
            "rva": 647512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841800,
            "rva": 647496,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_ShutdownSystem"
            },
            "instr_offset": 66,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 649,
          "symbol_index": 649,
          "accessor": "DTTR_PCDOGS_D_Audio_ShutdownSystem_ActiveWaveCount",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_SHUTDOWN_SYSTEM_ACTIVE_WAVE_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_SHUTDOWN_SYSTEM_ACTIVE_WAVE_COUNT"
        }
      }
    },
    "Audio_ShutdownSystem_ActiveWavesThemes": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526024,
            "rva": 331720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534212,
            "rva": 339908,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534212,
            "rva": 339908,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_ShutdownSystem"
            },
            "instr_offset": 74,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 239,
          "symbol_index": 239,
          "accessor": "DTTR_PCDOGS_D_Audio_ShutdownSystem_ActiveWavesThemes",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_SHUTDOWN_SYSTEM_ACTIVE_WAVES_THEMES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_SHUTDOWN_SYSTEM_ACTIVE_WAVES_THEMES"
        }
      }
    },
    "Audio_ShutdownSystem_MusicTransitionTarget": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832932,
            "rva": 638628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841828,
            "rva": 647524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841812,
            "rva": 647508,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_ShutdownSystem"
            },
            "instr_offset": 47,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int16_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_ShutdownSystem",
          "instr_offset": 47,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Signed 16-bit music transition target/state value cleared during audio shutdown.",
        "sdk": {
          "id": 651,
          "symbol_index": 651,
          "accessor": "DTTR_PCDOGS_D_Audio_ShutdownSystem_MusicTransitionTarget",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_SHUTDOWN_SYSTEM_MUSIC_TRANSITION_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_SHUTDOWN_SYSTEM_MUSIC_TRANSITION_TARGET"
        }
      }
    },
    "Audio_ShutdownSystem_OpenStreamCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832724,
            "rva": 638420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841624,
            "rva": 647320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841608,
            "rva": 647304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_ShutdownSystem"
            },
            "instr_offset": 61,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_ShutdownSystem",
          "instr_offset": 61,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Count of open Miles streams, incremented by Audio_OpenStream and decremented by Audio_CloseMusicStream.",
        "sdk": {
          "id": 644,
          "symbol_index": 644,
          "accessor": "DTTR_PCDOGS_D_Audio_ShutdownSystem_OpenStreamCount",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_SHUTDOWN_SYSTEM_OPEN_STREAM_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_SHUTDOWN_SYSTEM_OPEN_STREAM_COUNT"
        }
      }
    },
    "Audio_ShutdownSystem_SoundSlot0SampleHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832752,
            "rva": 638448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841648,
            "rva": 647344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841632,
            "rva": 647328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_ShutdownSystem"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Audio_AILHSample",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_ShutdownSystem",
          "instr_offset": 17,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Sample-handle field of sound_slots[0]. Audio_ShutdownSystem iterates this field across all sound slots.",
        "sdk": {
          "id": 646,
          "symbol_index": 646,
          "accessor": "DTTR_PCDOGS_D_Audio_ShutdownSystem_SoundSlot0SampleHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_SHUTDOWN_SYSTEM_SOUND_SLOT0_SAMPLE_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_SHUTDOWN_SYSTEM_SOUND_SLOT0_SAMPLE_HANDLE"
        }
      }
    },
    "Audio_SoundDefinition": {
      "type": {
        "members": [
          {
            "type": "void**",
            "name": "sample_table_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 4,
            "doc": "Audio definition flags. Script_OpPlaySoundBlockOrWait mutates bit 0x40 as a script_playback_active_or_wait_latch around direct playback."
          },
          {
            "type": "uint8_t",
            "name": "reserved_05",
            "offset": 5,
            "doc": "Reserved audio definition byte; allocation and playback paths consume the neighboring flags and replacement priority fields."
          },
          {
            "type": "uint8_t",
            "name": "replacement_priority",
            "offset": 6,
            "doc": "Priority byte used by Audio_AllocateSoundSlot when selecting a non-protected active sound to evict; a requested sound can replace an active sound when requested priority is less than or equal to the active definition priority."
          },
          {
            "type": "uint8_t",
            "name": "reserved_07",
            "offset": 7,
            "doc": "Reserved audio definition byte before the volume and pitch fields."
          },
          {
            "type": "int32_t",
            "name": "volume_fp12",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "pitch_fp12",
            "offset": 12,
            "doc": null
          },
          {
            "type": "void*",
            "name": "spatial_data_ptr",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Sound definition for Audio_PlaySoundDefinition3D and Audio_AllocateSoundSlot, with sample table, flags, replacement priority, fixed-point volume/pitch, optional spatial data, and script playback latch at flags bit 0x40.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Audio_SoundDefinition"
        }
      }
    },
    "Audio_SoundDescriptor": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "sound_id",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "flags",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Audio_SoundDescriptor"
        }
      }
    },
    "Audio_SoundEntry": {
      "type": {
        "members": [
          {
            "type": "Audio_SoundEntry*",
            "name": "prev",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Audio_SoundEntry*",
            "name": "next",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Audio_SoundDefinition*",
            "name": "sound_def_ptr",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Math_Vec3I32*",
            "name": "position_ptr",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "listener_pos",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "sound_pos",
            "offset": 28,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "volume",
            "offset": 40,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "pitch",
            "offset": 42,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "pan",
            "offset": 44,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 46,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding_2f",
            "offset": 47,
            "doc": null
          }
        ],
        "size": 48,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Audio_SoundEntry"
        }
      }
    },
    "Audio_SoundSlot": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "cached_volume",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "cached_pan",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "cached_playback_rate",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "base_playback_rate",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Audio_AILHSample",
            "name": "sample_handle",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Audio_SoundSlot"
        }
      }
    },
    "Audio_StartMusicWithFade": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425424,
            "rva": 231120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_StartMusicWithFade_TransitionState"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResetMusicState"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 285,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430480,
            "rva": 236176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_StartMusicWithFade_TransitionState"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResetMusicState"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4430448,
            "rva": 236144,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_StartMusicWithFade_TransitionState"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResetMusicState"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "stream_record",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_StartMusicWithFade_TransitionState"
            },
            "instr_offset": 7,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "6A 1E 68 00 10 00 00 66 C7 05 ??",
          "match_offset": 0
        },
        "docs": "Arms faded playback for the selected music stream record with a 0x1000 target volume over 31 fade frames, then resets music state; residual flag return is ignored.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 468,
          "symbol_index": 468,
          "accessor": "DTTR_PCDOGS_F_Audio_StartMusicWithFade",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_START_MUSIC_WITH_FADE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_START_MUSIC_WITH_FADE"
        }
      }
    },
    "Audio_StartMusicWithFade_TransitionState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832934,
            "rva": 638630,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841830,
            "rva": 647526,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841814,
            "rva": 647510,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_StartMusicWithFade"
            },
            "instr_offset": 7,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int16_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_StartMusicWithFade",
          "instr_offset": 7,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Signed 16-bit current music fade/transition volume state advanced by Audio_ProcessMusicFade.",
        "sdk": {
          "id": 652,
          "symbol_index": 652,
          "accessor": "DTTR_PCDOGS_D_Audio_StartMusicWithFade_TransitionState",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_START_MUSIC_WITH_FADE_TRANSITION_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_START_MUSIC_WITH_FADE_TRANSITION_STATE"
        }
      }
    },
    "Audio_StartSoundPlayback": {
      "function": {
        "analysis": {
          "en": {
            "address": 4424272,
            "rva": 229968,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_StartSoundPlayback_Slots"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSampleVolume"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 841,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4429328,
            "rva": 235024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_StartSoundPlayback_Slots"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSampleVolume"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 841,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4429296,
            "rva": 234992,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_StartSoundPlayback_Slots"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSamplePitch"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetSampleVolume"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 841,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "slot_index",
              "type": "int32_t"
            },
            {
              "name": "wave_data",
              "type": "int32_t*"
            },
            {
              "name": "pitch_scale_q12",
              "type": "int32_t"
            },
            {
              "name": "volume",
              "type": "int32_t"
            },
            {
              "name": "pan",
              "type": "int32_t"
            },
            {
              "name": "loop_flag",
              "type": "char"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_StartSoundPlayback_Slots"
            },
            "instr_offset": 112,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 55 8B 6C 24 10 56 57 81 7D 00 52 49 46 46 0F 85 ??",
          "match_offset": 0
        },
        "docs": "Starts a RIFF-backed sample in the selected sound slot after resetting the Miles sample handle, caching its base playback rate, applying pitch/pan/volume, and forcing the Miles loop count to zero when loopFlag is nonzero.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 453,
          "symbol_index": 453,
          "accessor": "DTTR_PCDOGS_F_Audio_StartSoundPlayback",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_START_SOUND_PLAYBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_START_SOUND_PLAYBACK"
        }
      }
    },
    "Audio_StartSoundPlayback_Slots": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832736,
            "rva": 638432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841632,
            "rva": 647328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841616,
            "rva": 647312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StartSoundPlayback"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_StartSoundPlayback"
            },
            "instr_offset": 112,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Audio_SoundSlot",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_StartSoundPlayback",
          "instr_offset": 112,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Base entry of the nine-slot Audio_SoundSlot array. Audio_InitializeSystem seeds the allocation cursor after the base entry, and SDK typed globals resolve to the array base.",
        "sdk": {
          "id": 645,
          "symbol_index": 645,
          "accessor": "DTTR_PCDOGS_D_Audio_StartSoundPlayback_Slots",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_START_SOUND_PLAYBACK_SLOTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_START_SOUND_PLAYBACK_SLOTS"
        }
      }
    },
    "Audio_StopAllSamples": {
      "function": {
        "analysis": {
          "en": {
            "address": 4424176,
            "rva": 229872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4429232,
            "rva": 234928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4429200,
            "rva": 234896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? BE ?? ?? ?? ?? 8B 06 50 FF D7 83 C6 14",
          "match_offset": -5
        },
        "docs": "Stops all active Miles sample playback slots while leaving the audio system initialized.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 6,
          "symbol_index": 6,
          "accessor": "DTTR_PCDOGS_F_Audio_StopAllSamples",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_STOP_ALL_SAMPLES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_STOP_ALL_SAMPLES"
        }
      }
    },
    "Audio_StopAllSounds": {
      "function": {
        "analysis": {
          "en": {
            "address": 4424224,
            "rva": 229920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 274,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4429280,
            "rva": 234976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 865,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4429248,
            "rva": 234944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 865,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "6A 00 50 FF 15 ?? ?? ?? ?? E9 ?? ?? ?? ?? 90",
          "match_offset": -5
        },
        "docs": "Stops all currently playing game sounds through the active Miles digital driver.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 7,
          "symbol_index": 7,
          "accessor": "DTTR_PCDOGS_F_Audio_StopAllSounds",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_STOP_ALL_SOUNDS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_STOP_ALL_SOUNDS"
        }
      }
    },
    "Audio_StopMusicAndPause": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425360,
            "rva": 231056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StopAllSamples"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430416,
            "rva": 236112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StopAllSamples"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4430384,
            "rva": 236080,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_StopAllSamples"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8A 0D ?? ?? ?? ?? B0 02 84 C8 75 ?? 0A C8 88 0D ?? ?? ?? ?? E9 ?? ?? ?? ?? C3 90 90 90 90 90 90 8B 44 24 04 A3 ??",
          "match_offset": 0
        },
        "docs": "Sets the music stop/pause flag and closes the active music stream. Callers ignore the residual return value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 466,
          "symbol_index": 466,
          "accessor": "DTTR_PCDOGS_F_Audio_StopMusicAndPause",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_STOP_MUSIC_AND_PAUSE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_STOP_MUSIC_AND_PAUSE"
        }
      }
    },
    "Audio_StopMusicWrapper": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425728,
            "rva": 231424,
            "image_base": 4194304
          },
          "eu": {
            "address": 4430784,
            "rva": 236480,
            "image_base": 4194304
          },
          "sc": {
            "address": 4430752,
            "rva": 236448,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E9 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 A1",
          "match_offset": 0
        },
        "docs": "Pure tail-call wrapper around the stop-music path. Callers use side effects only and no public return is modeled.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 471,
          "symbol_index": 471,
          "accessor": "DTTR_PCDOGS_F_Audio_StopMusicWrapper",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_STOP_MUSIC_WRAPPER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_STOP_MUSIC_WRAPPER"
        }
      }
    },
    "Audio_StopSound": {
      "function": {
        "analysis": {
          "en": {
            "address": 4460064,
            "rva": 265760,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4465616,
            "rva": 271312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4465632,
            "rva": 271328,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "slot_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "08 84 C0 74 ?? 56 E8 ??",
          "match_offset": -15
        },
        "docs": "Frees the sound slot with resource cleanup enabled, then releases the Miles sample handle when the slot free succeeds.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 584,
          "symbol_index": 584,
          "accessor": "DTTR_PCDOGS_F_Audio_StopSound",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_STOP_SOUND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_STOP_SOUND"
        }
      }
    },
    "Audio_TriggerCollisionSound": {
      "function": {
        "analysis": {
          "en": {
            "address": 4416432,
            "rva": 222128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CheckCooldownExpired"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 1088,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4421488,
            "rva": 227184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CheckCooldownExpired"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 1088,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4421456,
            "rva": 227152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CheckCooldownExpired"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 1088,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "other_actor",
              "type": "Actor_State*"
            },
            {
              "name": "sound_key",
              "type": "int32_t"
            },
            {
              "name": "packed_impact_cooldown",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 00 55 53 56 E8 ??",
          "match_offset": -43
        },
        "docs": "Triggers a collision/impact sound for actor vs otherActor when the packed cooldown check permits it.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 444,
          "symbol_index": 444,
          "accessor": "DTTR_PCDOGS_F_Audio_TriggerCollisionSound",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_TRIGGER_COLLISION_SOUND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_TRIGGER_COLLISION_SOUND"
        }
      }
    },
    "Audio_TriggerMusicTransition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4220896,
            "rva": 26592,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_MusicFadeFrameCount"
                },
                "instr_offset": 102,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_Active"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_EndFrame"
                },
                "instr_offset": 226,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_FadeStartFrame"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_FrameCounter"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_PKGResourceCurrentLevelData"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_Pending"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_Volume"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_FrameTransitionFlags"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CheckStreamStatus"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResetMusicState"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 284,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTriggerMusicTransition"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4221344,
            "rva": 27040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_MusicFadeFrameCount"
                },
                "instr_offset": 102,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_Active"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_EndFrame"
                },
                "instr_offset": 226,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_FadeStartFrame"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_FrameCounter"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_PKGResourceCurrentLevelData"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_Pending"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_Volume"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_FrameTransitionFlags"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CheckStreamStatus"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResetMusicState"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 284,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTriggerMusicTransition"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4221344,
            "rva": 27040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_MusicFadeFrameCount"
                },
                "instr_offset": 102,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_Active"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_EndFrame"
                },
                "instr_offset": 226,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_FadeStartFrame"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_FrameCounter"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_PKGResourceCurrentLevelData"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_Pending"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_TriggerMusicTransition_Volume"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_FrameTransitionFlags"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CheckStreamStatus"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResetMusicState"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 284,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTriggerMusicTransition"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "track_index",
              "type": "int32_t"
            },
            {
              "name": "fade_speed",
              "type": "int32_t"
            },
            {
              "name": "track_data",
              "type": "int32_t*"
            },
            {
              "name": "loop_flag",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_TriggerMusicTransition_Volume"
            },
            "instr_offset": 153,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_MusicFadeFrameCount"
            },
            "instr_offset": 102,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_TriggerMusicTransition_FadeStartFrame"
            },
            "instr_offset": 199,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_TriggerMusicTransition_EndFrame"
            },
            "instr_offset": 226,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_TriggerMusicTransition_Pending"
            },
            "instr_offset": 207,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_TriggerMusicTransition_FrameCounter"
            },
            "instr_offset": 96,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Game_FrameTransitionFlags"
            },
            "instr_offset": 12,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_TriggerMusicTransition_PKGResourceCurrentLevelData"
            },
            "instr_offset": 65,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_TriggerMusicTransition_Active"
            },
            "instr_offset": 41,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 8B 45 0C 53 85 C0 56 7D ?? 8B 0D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 74,
          "symbol_index": 74,
          "accessor": "DTTR_PCDOGS_F_Audio_TriggerMusicTransition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_TRIGGER_MUSIC_TRANSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_TRIGGER_MUSIC_TRANSITION"
        }
      }
    },
    "Audio_TriggerMusicTransition_Active": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831748,
            "rva": 23637444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843012,
            "rva": 23648708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27842436,
            "rva": 23648132,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_TriggerMusicTransition"
            },
            "instr_offset": 41,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_TriggerMusicTransition",
          "instr_offset": 41,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Byte-sized music transition active/selected-state flag read by Audio_TriggerMusicTransition.",
        "sdk": {
          "id": 963,
          "symbol_index": 963,
          "accessor": "DTTR_PCDOGS_D_Audio_TriggerMusicTransition_Active",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_TRIGGER_MUSIC_TRANSITION_ACTIVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_TRIGGER_MUSIC_TRANSITION_ACTIVE"
        }
      }
    },
    "Audio_TriggerMusicTransition_EndFrame": {
      "data": {
        "analysis": {
          "en": {
            "address": 4546256,
            "rva": 351952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 226,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554592,
            "rva": 360288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 226,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554576,
            "rva": 360272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 226,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_TriggerMusicTransition"
            },
            "instr_offset": 226,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 339,
          "symbol_index": 339,
          "accessor": "DTTR_PCDOGS_D_Audio_TriggerMusicTransition_EndFrame",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_TRIGGER_MUSIC_TRANSITION_END_FRAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_TRIGGER_MUSIC_TRANSITION_END_FRAME"
        }
      }
    },
    "Audio_TriggerMusicTransition_FadeStartFrame": {
      "data": {
        "analysis": {
          "en": {
            "address": 4546252,
            "rva": 351948,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554588,
            "rva": 360284,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554572,
            "rva": 360268,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_TriggerMusicTransition"
            },
            "instr_offset": 199,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 338,
          "symbol_index": 338,
          "accessor": "DTTR_PCDOGS_D_Audio_TriggerMusicTransition_FadeStartFrame",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_TRIGGER_MUSIC_TRANSITION_FADE_START_FRAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_TRIGGER_MUSIC_TRANSITION_FADE_START_FRAME"
        }
      }
    },
    "Audio_TriggerMusicTransition_FrameCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838020,
            "rva": 643716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848252,
            "rva": 653948,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4847676,
            "rva": 653372,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_TriggerMusicTransition"
            },
            "instr_offset": 96,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_TriggerMusicTransition",
          "instr_offset": 96,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Data frame counter used by music fade/transition timing and other frame-based game state checks.",
        "sdk": {
          "id": 708,
          "symbol_index": 708,
          "accessor": "DTTR_PCDOGS_D_Audio_TriggerMusicTransition_FrameCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_TRIGGER_MUSIC_TRANSITION_FRAME_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_TRIGGER_MUSIC_TRANSITION_FRAME_COUNTER"
        }
      }
    },
    "Audio_TriggerMusicTransition_PKGResourceCurrentLevelData": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831712,
            "rva": 23637408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27842976,
            "rva": 23648672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27842400,
            "rva": 23648096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_TriggerMusicTransition"
            },
            "instr_offset": 65,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Level_Data*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_TriggerMusicTransition",
          "instr_offset": 65,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "This holds the active stable Level_Data pointer, which can be cast to the unstable Level_RuntimeData layout.",
        "sdk": {
          "id": 953,
          "symbol_index": 953,
          "accessor": "DTTR_PCDOGS_D_Audio_TriggerMusicTransition_PKGResourceCurrentLevelData",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_TRIGGER_MUSIC_TRANSITION_PKG_RESOURCE_CURRENT_LEVEL_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_TRIGGER_MUSIC_TRANSITION_PKG_RESOURCE_CURRENT_LEVEL_DATA"
        }
      }
    },
    "Audio_TriggerMusicTransition_Pending": {
      "data": {
        "analysis": {
          "en": {
            "address": 4546260,
            "rva": 351956,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554596,
            "rva": 360292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554580,
            "rva": 360276,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_TriggerMusicTransition"
            },
            "instr_offset": 207,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 340,
          "symbol_index": 340,
          "accessor": "DTTR_PCDOGS_D_Audio_TriggerMusicTransition_Pending",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_TRIGGER_MUSIC_TRANSITION_PENDING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_TRIGGER_MUSIC_TRANSITION_PENDING"
        }
      }
    },
    "Audio_TriggerMusicTransition_Volume": {
      "data": {
        "analysis": {
          "en": {
            "address": 4545848,
            "rva": 351544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554184,
            "rva": 359880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554168,
            "rva": 359864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_TriggerMusicTransition"
            },
            "instr_offset": 153,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 329,
          "symbol_index": 329,
          "accessor": "DTTR_PCDOGS_D_Audio_TriggerMusicTransition_Volume",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_TRIGGER_MUSIC_TRANSITION_VOLUME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_TRIGGER_MUSIC_TRANSITION_VOLUME"
        }
      }
    },
    "Audio_TriggerSoundAtPosition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4210384,
            "rva": 16080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopSound"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3527,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 727,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 706,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpStopSound"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4210832,
            "rva": 16528,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopSound"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3527,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 727,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 716,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpStopSound"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4210832,
            "rva": 16528,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopSound"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3527,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 727,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 716,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpStopSound"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "sound_type_index",
              "type": "int32_t"
            },
            {
              "name": "position",
              "type": "Math_Vec3I32*"
            },
            {
              "name": "stop_only_if_playing",
              "type": "char"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 53 55 56 85",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 52,
          "symbol_index": 52,
          "accessor": "DTTR_PCDOGS_F_Audio_TriggerSoundAtPosition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_TRIGGER_SOUND_AT_POSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_TRIGGER_SOUND_AT_POSITION"
        }
      }
    },
    "Audio_UpdateSoundChannels": {
      "function": {
        "analysis": {
          "en": {
            "address": 4460944,
            "rva": 266640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_UpdateSoundChannels_Timer"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopSound"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4466496,
            "rva": 272192,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_UpdateSoundChannels_Timer"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopSound"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4466512,
            "rva": 272208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_UpdateSoundChannels_Timer"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FreeSoundSlot"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopSound"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "channel_mask",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Audio_UpdateSoundChannels_Timer"
            },
            "instr_offset": 163,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 8B 5C 24 08 56 8B 35 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 589,
          "symbol_index": 589,
          "accessor": "DTTR_PCDOGS_F_Audio_UpdateSoundChannels",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_AUDIO_UPDATE_SOUND_CHANNELS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_AUDIO_UPDATE_SOUND_CHANNELS"
        }
      }
    },
    "Audio_UpdateSoundChannels_Timer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838004,
            "rva": 643700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848236,
            "rva": 653932,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4847660,
            "rva": 653356,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_UpdateSoundChannels"
            },
            "instr_offset": 163,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_UpdateSoundChannels",
          "instr_offset": 163,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Last Timer_GetElapsedTickCount value captured by Audio_UpdateSoundChannels for per-channel sound timing updates.",
        "sdk": {
          "id": 706,
          "symbol_index": 706,
          "accessor": "DTTR_PCDOGS_D_Audio_UpdateSoundChannels_Timer",
          "sdk_id": "DTTR_PCDOGS_DATA_AUDIO_UPDATE_SOUND_CHANNELS_TIMER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_AUDIO_UPDATE_SOUND_CHANNELS_TIMER"
        }
      }
    },
    "Audio_WaveFormat": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "format_tag",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "channels",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "bits_per_sample",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "block_align",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Audio_WaveFormat"
        }
      }
    },
    "Bone_BlendVerticesMultiWeight": {
      "function": {
        "analysis": {
          "en": {
            "address": 4252160,
            "rva": 57856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 314,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4252640,
            "rva": 58336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 314,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4252640,
            "rva": 58336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 314,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "mesh_piece",
              "type": "Submesh_Entry*",
              "docs": "Mesh piece descriptor; vert_start_index selects the first vertex and vert_count the vertex count."
            },
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor/render state whose transformed vertex buffer and normal accumulator are updated."
            },
            {
              "name": "skin_tables",
              "type": "int16_t**",
              "docs": "Array of source skin/bone xyz delta tables, each stored as 4 int16 values per vertex."
            },
            {
              "name": "weights",
              "type": "int32_t*",
              "docs": "Q12 blend weights; up to four nonzero entries are consumed."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "40 8D 04 8A 50 56 E8 ??",
          "match_offset": -43
        },
        "docs": "Blends up to four weighted skin/bone vertex tables into the actor transformed vertex buffer for one mesh piece, then recomputes normals. A zero second weight copies the first skin table directly; otherwise the routine writes the first weighted table, accumulates remaining nonzero weights, clears touched normal accumulators, and calls Bone_ComputeNormalsPostTransform.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 110,
          "symbol_index": 110,
          "accessor": "DTTR_PCDOGS_F_Bone_BlendVerticesMultiWeight",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_BONE_BLEND_VERTICES_MULTI_WEIGHT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_BONE_BLEND_VERTICES_MULTI_WEIGHT"
        }
      }
    },
    "Bone_ComputeNormalsPostTransform": {
      "function": {
        "analysis": {
          "en": {
            "address": 4250688,
            "rva": 56384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1135,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_BlendVerticesMultiWeight"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_BlendVerticesMultiWeight"
                },
                "instr_offset": 314,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 762,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4251168,
            "rva": 56864,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1135,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_BlendVerticesMultiWeight"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_BlendVerticesMultiWeight"
                },
                "instr_offset": 314,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 762,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4251168,
            "rva": 56864,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1135,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_BlendVerticesMultiWeight"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_BlendVerticesMultiWeight"
                },
                "instr_offset": 314,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 762,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor/render state containing transformed vertices , face records , and normal accumulators ."
            },
            {
              "name": "mesh_piece",
              "type": "Submesh_Entry*",
              "docs": "Mesh piece descriptor; vert_start_index/vert_count select vertices and poly_start_index/poly_count select faces."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 80 7B 64 03 0F 84 ??",
          "match_offset": -22
        },
        "docs": "Computes post-transform face normals for a mesh piece. When mesh_piece flags bit0 is set, face normals accumulate into actor normal storage before affected vertices are normalized.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 109,
          "symbol_index": 109,
          "accessor": "DTTR_PCDOGS_F_Bone_ComputeNormalsPostTransform",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_BONE_COMPUTE_NORMALS_POST_TRANSFORM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_BONE_COMPUTE_NORMALS_POST_TRANSFORM"
        }
      }
    },
    "Bone_JointTrackState": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "angle_param[4]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "current_yaw",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "current_pitch",
            "offset": 10,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "max_angle_step",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "pad_0e",
            "offset": 14,
            "doc": null
          },
          {
            "type": "Math_Matrix3x3I16",
            "name": "base_rotation",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "pad_22",
            "offset": 34,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "node",
            "offset": 36,
            "doc": null
          }
        ],
        "size": 40,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Joint head/eye tracking state advanced by Bone_UpdateJointTracking: angle limits, current yaw/pitch, base rotation, and the tracked scene node.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Bone_JointTrackState"
        }
      }
    },
    "Bone_ProcessExternalRef": {
      "function": {
        "analysis": {
          "en": {
            "address": 4311968,
            "rva": 117664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_AdjustColorQuadRGB"
                },
                "instr_offset": 4017,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 3543,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 2525,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4312448,
            "rva": 118144,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_AdjustColorQuadRGB"
                },
                "instr_offset": 4017,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 3543,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 2525,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4312448,
            "rva": 118144,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_AdjustColorQuadRGB"
                },
                "instr_offset": 4017,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 3543,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 2525,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            },
            {
              "name": "sprite_ctx",
              "type": "Graphics_SpriteNodeData*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 68 A1 ?? ?? ?? ?? 8B 0D ??",
          "match_offset": 0
        },
        "docs": "Builds/enqueues billboard-like sprite polygon batch records for a scene node using Graphics_SpriteNodeData extents/material; handles material external-ref chaining and vertex colors.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 273,
          "symbol_index": 273,
          "accessor": "DTTR_PCDOGS_F_Bone_ProcessExternalRef",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_BONE_PROCESS_EXTERNAL_REF",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_BONE_PROCESS_EXTERNAL_REF"
        }
      }
    },
    "Bone_TransformVerticesMorphed": {
      "function": {
        "analysis": {
          "en": {
            "address": 4248832,
            "rva": 54528,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 406,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4249312,
            "rva": 55008,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 406,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4249312,
            "rva": 55008,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 406,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "sample_time",
              "type": "uint32_t"
            },
            {
              "name": "morph_channels",
              "type": "Animation_SplineChannel*"
            },
            {
              "name": "actor_or_mesh_state",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 01 83 F8 FF 0F 85 ??",
          "match_offset": -12
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 107,
          "symbol_index": 107,
          "accessor": "DTTR_PCDOGS_F_Bone_TransformVerticesMorphed",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_BONE_TRANSFORM_VERTICES_MORPHED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_BONE_TRANSFORM_VERTICES_MORPHED"
        }
      }
    },
    "Bone_TransformVerticesWeighted": {
      "function": {
        "analysis": {
          "en": {
            "address": 4249904,
            "rva": 55600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_BlendVerticesMultiWeight"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 762,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4250384,
            "rva": 56080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_BlendVerticesMultiWeight"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 762,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4250384,
            "rva": 56080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CalculateSplineParameter"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_BlendVerticesMultiWeight"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 762,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "sample_time",
              "type": "uint32_t",
              "docs": "Animation sample time used to evaluate bone-weight channels."
            },
            {
              "name": "bone_channels",
              "type": "Animation_SplineChannel*",
              "docs": "Bone/skin channel array; channel_flags bit 0x40 selects this weighted vertex path."
            },
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor/render state whose skin table and scene vertex buffer are updated."
            },
            {
              "name": "mesh_piece",
              "type": "void*",
              "docs": "Mesh piece descriptor; +4 is first vertex and +6 is vertex count for the affected span."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 F6 40 0A 40 0F 84 ??",
          "match_offset": -9
        },
        "docs": "Transforms weighted/skinned vertices for a mesh piece using animation bone channels, then updates scene vertex data and recomputes normals.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 108,
          "symbol_index": 108,
          "accessor": "DTTR_PCDOGS_F_Bone_TransformVerticesWeighted",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_BONE_TRANSFORM_VERTICES_WEIGHTED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_BONE_TRANSFORM_VERTICES_WEIGHTED"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender": {
      "function": {
        "analysis": {
          "en": {
            "address": 4339104,
            "rva": 144800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix01"
                },
                "instr_offset": 35,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix02"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix10"
                },
                "instr_offset": 53,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix11"
                },
                "instr_offset": 161,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix12"
                },
                "instr_offset": 87,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix20"
                },
                "instr_offset": 80,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix21"
                },
                "instr_offset": 98,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix22"
                },
                "instr_offset": 205,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderTransformMatrix"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimFlags"
                },
                "instr_offset": 1406,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimFrame"
                },
                "instr_offset": 1398,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimState"
                },
                "instr_offset": 1151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionX"
                },
                "instr_offset": 768,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionY"
                },
                "instr_offset": 777,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionZ"
                },
                "instr_offset": 786,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteVertexFlags"
                },
                "instr_offset": 1491,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 2109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3306,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4341040,
            "rva": 146736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix01"
                },
                "instr_offset": 35,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix02"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix10"
                },
                "instr_offset": 53,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix11"
                },
                "instr_offset": 161,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix12"
                },
                "instr_offset": 87,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix20"
                },
                "instr_offset": 80,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix21"
                },
                "instr_offset": 98,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix22"
                },
                "instr_offset": 205,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderTransformMatrix"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimFlags"
                },
                "instr_offset": 1406,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimFrame"
                },
                "instr_offset": 1398,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimState"
                },
                "instr_offset": 1151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionX"
                },
                "instr_offset": 768,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionY"
                },
                "instr_offset": 777,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionZ"
                },
                "instr_offset": 786,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteVertexFlags"
                },
                "instr_offset": 1491,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 2109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3306,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4341040,
            "rva": 146736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix01"
                },
                "instr_offset": 35,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix02"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix10"
                },
                "instr_offset": 53,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix11"
                },
                "instr_offset": 161,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix12"
                },
                "instr_offset": 87,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix20"
                },
                "instr_offset": 80,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix21"
                },
                "instr_offset": 98,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix22"
                },
                "instr_offset": 205,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderTransformMatrix"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimFlags"
                },
                "instr_offset": 1406,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimFrame"
                },
                "instr_offset": 1398,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimState"
                },
                "instr_offset": 1151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionX"
                },
                "instr_offset": 768,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionY"
                },
                "instr_offset": 777,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionZ"
                },
                "instr_offset": 786,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Bone_TransformWeightedVerticesForRender_SpriteVertexFlags"
                },
                "instr_offset": 1491,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 2109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3306,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            },
            {
              "name": "weighted_span",
              "type": "Submesh_RenderSpan*",
              "docs": "Weighted submesh render span selecting the weighted-vertex range to transform."
            },
            {
              "name": "matrix",
              "type": "int16_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_SpriteVertexFlags"
            },
            "instr_offset": 1491,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionX"
            },
            "instr_offset": 768,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionY"
            },
            "instr_offset": 777,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_SpriteLastPositionZ"
            },
            "instr_offset": 786,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimFrame"
            },
            "instr_offset": 1398,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimFlags"
            },
            "instr_offset": 1406,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_SpriteAnimState"
            },
            "instr_offset": 1151,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderTransformMatrix"
            },
            "instr_offset": 28,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix01"
            },
            "instr_offset": 35,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix02"
            },
            "instr_offset": 60,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix10"
            },
            "instr_offset": 53,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix11"
            },
            "instr_offset": 161,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix12"
            },
            "instr_offset": 87,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix20"
            },
            "instr_offset": 80,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix21"
            },
            "instr_offset": 98,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix22"
            },
            "instr_offset": 205,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "66 83 7A 0A 00 0F 8F ??",
          "match_offset": -12
        },
        "docs": "Transforms weighted/skinned vertices for render using Scene_Node runtime vertex records. Callers ignore the residual return value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 280,
          "symbol_index": 280,
          "accessor": "DTTR_PCDOGS_F_Bone_TransformWeightedVerticesForRender",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix01": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507906,
            "rva": 2313602,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 35,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519170,
            "rva": 2324866,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 35,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518594,
            "rva": 2324290,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 35,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 35,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 836,
          "symbol_index": 836,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix01",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX01",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX01"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix02": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507908,
            "rva": 2313604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519172,
            "rva": 2324868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518596,
            "rva": 2324292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 60,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 837,
          "symbol_index": 837,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix02",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX02",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX02"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix10": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507910,
            "rva": 2313606,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 53,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519174,
            "rva": 2324870,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 53,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518598,
            "rva": 2324294,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 53,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 53,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 838,
          "symbol_index": 838,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix10",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX10",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX10"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix11": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507912,
            "rva": 2313608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 161,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519176,
            "rva": 2324872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 161,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518600,
            "rva": 2324296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 161,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 161,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 839,
          "symbol_index": 839,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix11",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX11",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX11"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix12": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507914,
            "rva": 2313610,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 87,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519178,
            "rva": 2324874,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 87,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518602,
            "rva": 2324298,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 87,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 87,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 840,
          "symbol_index": 840,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix12",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX12",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX12"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix20": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507916,
            "rva": 2313612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 80,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519180,
            "rva": 2324876,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 80,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518604,
            "rva": 2324300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 80,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 80,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 841,
          "symbol_index": 841,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix20",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX20",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX20"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix21": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507918,
            "rva": 2313614,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 98,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519182,
            "rva": 2324878,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 98,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518606,
            "rva": 2324302,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 98,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 98,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 842,
          "symbol_index": 842,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix21",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX21",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX21"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix22": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507920,
            "rva": 2313616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 205,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519184,
            "rva": 2324880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 205,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518608,
            "rva": 2324304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 205,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 205,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 843,
          "symbol_index": 843,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_GraphicsRenderMatrix22",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX22",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_MATRIX22"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_GraphicsRenderTransformMatrix": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507904,
            "rva": 2313600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519168,
            "rva": 2324864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518592,
            "rva": 2324288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 28,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 835,
          "symbol_index": 835,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_GraphicsRenderTransformMatrix",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_TRANSFORM_MATRIX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_GRAPHICS_RENDER_TRANSFORM_MATRIX"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_SpriteAnimFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 4822706,
            "rva": 628402,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1406,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4831090,
            "rva": 636786,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1406,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4831074,
            "rva": 636770,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1406,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 1406,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 511,
          "symbol_index": 511,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_SpriteAnimFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_ANIM_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_ANIM_FLAGS"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_SpriteAnimFrame": {
      "data": {
        "analysis": {
          "en": {
            "address": 4822704,
            "rva": 628400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1398,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4831088,
            "rva": 636784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1398,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4831072,
            "rva": 636768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1398,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 1398,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 510,
          "symbol_index": 510,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_SpriteAnimFrame",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_ANIM_FRAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_ANIM_FRAME"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_SpriteAnimState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4822708,
            "rva": 628404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4831092,
            "rva": 636788,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4831076,
            "rva": 636772,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 1151,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 512,
          "symbol_index": 512,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_SpriteAnimState",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_ANIM_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_ANIM_STATE"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_SpriteLastPositionX": {
      "data": {
        "analysis": {
          "en": {
            "address": 4822688,
            "rva": 628384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 768,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4831072,
            "rva": 636768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 768,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4831056,
            "rva": 636752,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 768,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 768,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 507,
          "symbol_index": 507,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_SpriteLastPositionX",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_LAST_POSITION_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_LAST_POSITION_X"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_SpriteLastPositionY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4822692,
            "rva": 628388,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 777,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4831076,
            "rva": 636772,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 777,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4831060,
            "rva": 636756,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 777,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 777,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 508,
          "symbol_index": 508,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_SpriteLastPositionY",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_LAST_POSITION_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_LAST_POSITION_Y"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_SpriteLastPositionZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 4822696,
            "rva": 628392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 786,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4831080,
            "rva": 636776,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 786,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4831064,
            "rva": 636760,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 786,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 786,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 509,
          "symbol_index": 509,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_SpriteLastPositionZ",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_LAST_POSITION_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_LAST_POSITION_Z"
        }
      }
    },
    "Bone_TransformWeightedVerticesForRender_SpriteVertexFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810699,
            "rva": 616395,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1491,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4819075,
            "rva": 624771,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1491,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4819059,
            "rva": 624755,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 1491,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Bone_TransformWeightedVerticesForRender"
            },
            "instr_offset": 1491,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 506,
          "symbol_index": 506,
          "accessor": "DTTR_PCDOGS_D_Bone_TransformWeightedVerticesForRender_SpriteVertexFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_VERTEX_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_BONE_TRANSFORM_WEIGHTED_VERTICES_FOR_RENDER_SPRITE_VERTEX_FLAGS"
        }
      }
    },
    "Bone_UpdateJointTracking": {
      "function": {
        "analysis": {
          "en": {
            "address": 4253264,
            "rva": 58960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 1901,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3615,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4253744,
            "rva": 59440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 1901,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3615,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4253744,
            "rva": 59440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 1901,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3615,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int16_t*",
          "params": [
            {
              "name": "track",
              "type": "Bone_JointTrackState*"
            },
            {
              "name": "target_actor",
              "type": "Actor_State*"
            },
            {
              "name": "target_pos",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 C0 2C 50 51 52 E8 ??",
          "match_offset": -21
        },
        "docs": "Advances a joint head/eye tracking state toward the target actor or explicit target position.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 114,
          "symbol_index": 114,
          "accessor": "DTTR_PCDOGS_F_Bone_UpdateJointTracking",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_BONE_UPDATE_JOINT_TRACKING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_BONE_UPDATE_JOINT_TRACKING"
        }
      }
    },
    "CRT_CaptureNLGNotifyContext": {
      "function": {
        "analysis": {
          "en": {
            "address": 4488858,
            "rva": 294554,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 347,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7004,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4496698,
            "rva": 302394,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 347,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7004,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4496474,
            "rva": 302170,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 347,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7004,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "notification_code",
              "type": "int32_t",
              "docs": "Stack-passed NLG notification code popped by ret 4. The helper also consumes EAX as the handler/continuation address and EBP as the establisher frame."
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": false,
        "resolver": {
          "kind": "aob",
          "pattern": "53 51 BB ?? ?? ?? ?? 8B",
          "match_offset": 0
        },
        "docs": "MSVC _NLG_Notify-style unwind helper; saves EAX, EBP, and *(EBP+8) into the CRT NLG context. EAX and EBP are implicit inputs, while the stack notification code is popped by ret 4.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 686,
          "symbol_index": 686,
          "accessor": "DTTR_PCDOGS_F_CRT_CaptureNLGNotifyContext",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CRT_CAPTURE_NLG_NOTIFY_CONTEXT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CRT_CAPTURE_NLG_NOTIFY_CONTEXT"
        }
      }
    },
    "Camera_BuildViewMatrix": {
      "function": {
        "analysis": {
          "en": {
            "address": 4474080,
            "rva": 279776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 531,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 822,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1113,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4481920,
            "rva": 287616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 531,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 822,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1113,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4481696,
            "rva": 287392,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 531,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 822,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1113,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "frustum_dirs",
              "type": "Camera_FrustumDirTable*",
              "docs": "Receives five int16 direction triples (stride 8), not a 3x3 view matrix."
            },
            {
              "name": "screen_half_size",
              "type": "int16_t*"
            },
            {
              "name": "focal_distance",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "D1 89 45 E0 89 45 E8 ??",
          "match_offset": -74
        },
        "docs": "Writes the five frustum direction entries derived from the current view angles, screen half size, and focal distance.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 617,
          "symbol_index": 617,
          "accessor": "DTTR_PCDOGS_F_Camera_BuildViewMatrix",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_BUILD_VIEW_MATRIX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_BUILD_VIEW_MATRIX"
        }
      }
    },
    "Camera_CalculateClipDistance": {
      "function": {
        "analysis": {
          "en": {
            "address": 4475312,
            "rva": 281008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetDefaultFOV"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2132,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4483152,
            "rva": 288848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetDefaultFOV"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2132,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4482928,
            "rva": 288624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetDefaultFOV"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2132,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "camera",
              "type": "Camera_Runtime*"
            },
            {
              "name": "fov",
              "type": "int16_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "04 00 00 2B C6 50 E8 ??",
          "match_offset": -19
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 618,
          "symbol_index": 618,
          "accessor": "DTTR_PCDOGS_F_Camera_CalculateClipDistance",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_CALCULATE_CLIP_DISTANCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_CALCULATE_CLIP_DISTANCE"
        }
      }
    },
    "Camera_CalculateFollowAngles": {
      "function": {
        "analysis": {
          "en": {
            "address": 4228192,
            "rva": 33888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_CalculateFollowAngles_InputStateCurrentP1"
                },
                "instr_offset": 828,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_CalculateFollowAngles_PreviousYaw"
                },
                "instr_offset": 151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 3300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 3681,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 3809,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 4008,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 2288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 3407,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 3778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1205,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 3589,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 3598,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 2606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 2736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3042,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3069,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3461,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4228656,
            "rva": 34352,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_CalculateFollowAngles_InputStateCurrentP1"
                },
                "instr_offset": 828,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_CalculateFollowAngles_PreviousYaw"
                },
                "instr_offset": 151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 3300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 3681,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 3809,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 4008,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 2288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 3407,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 3778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1205,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 3589,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 3598,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 2606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 2736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3042,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3069,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3461,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4228656,
            "rva": 34352,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_CalculateFollowAngles_InputStateCurrentP1"
                },
                "instr_offset": 828,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_CalculateFollowAngles_PreviousYaw"
                },
                "instr_offset": 151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 3300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 3681,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 3809,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 4008,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 2288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 3407,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 3778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1205,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 3589,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 3598,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 2606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 2736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3042,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3069,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 3461,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "camera",
              "type": "Camera_Runtime*"
            },
            {
              "name": "target_actor",
              "type": "Actor_State*",
              "docs": "Actor that the follow-camera code is targeting for this update."
            },
            {
              "name": "pose",
              "type": "Camera_Pose*",
              "docs": "Caller-owned pose output/input record used by follow-camera calculations."
            },
            {
              "name": "cam_def",
              "type": "PKG_CameraDef*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Camera_CalculateFollowAngles_PreviousYaw"
            },
            "instr_offset": 151,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_CalculateFollowAngles_InputStateCurrentP1"
            },
            "instr_offset": 828,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 81 EC 78 01 00 00 A1 ??",
          "match_offset": 0
        },
        "docs": "Calculates camera follow angles for targetActor and updates the packed camera_yaw_angle global used by movement.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 81,
          "symbol_index": 81,
          "accessor": "DTTR_PCDOGS_F_Camera_CalculateFollowAngles",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_CALCULATE_FOLLOW_ANGLES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_CALCULATE_FOLLOW_ANGLES"
        }
      }
    },
    "Camera_CalculateFollowAngles_InputStateCurrentP1": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505568,
            "rva": 2311264,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 828,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515808,
            "rva": 2321504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 828,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515232,
            "rva": 2320928,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 828,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_CalculateFollowAngles"
            },
            "instr_offset": 828,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "First/base byte of the two-player current Input_State snapshot rows. Player 2 follows in the paired row, and scalar aliases overlap the row.",
        "sdk": {
          "id": 747,
          "symbol_index": 747,
          "accessor": "DTTR_PCDOGS_D_Camera_CalculateFollowAngles_InputStateCurrentP1",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_CALCULATE_FOLLOW_ANGLES_INPUT_STATE_CURRENT_P1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_CALCULATE_FOLLOW_ANGLES_INPUT_STATE_CURRENT_P1"
        }
      }
    },
    "Camera_CalculateFollowAngles_PreviousYaw": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551132,
            "rva": 356828,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559468,
            "rva": 365164,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559452,
            "rva": 365148,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 151,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_CalculateFollowAngles"
            },
            "instr_offset": 151,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 347,
          "symbol_index": 347,
          "accessor": "DTTR_PCDOGS_D_Camera_CalculateFollowAngles_PreviousYaw",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_CALCULATE_FOLLOW_ANGLES_PREVIOUS_YAW",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_CALCULATE_FOLLOW_ANGLES_PREVIOUS_YAW"
        }
      }
    },
    "Camera_CalculatePosition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4226784,
            "rva": 32480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3681,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3809,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 4008,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 1214,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4227248,
            "rva": 32944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3681,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3809,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 4008,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 1214,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4227248,
            "rva": 32944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3681,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3809,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 4008,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 1214,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "camera_pose",
              "type": "Camera_Pose*",
              "docs": "Pose whose eye/source components are recomputed from its target components and angles."
            },
            {
              "name": "target_distance",
              "type": "int32_t",
              "docs": "Distance from target/look-at point used to recompute the eye/source position."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 56 8B 75 08 66 8B 06 50 E8 ??",
          "match_offset": 0
        },
        "docs": "Recomputes camera_pose eye/source position from target_pos fields, the first two wrapped angle words, and target_distance using Math_SinCosFP12.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 79,
          "symbol_index": 79,
          "accessor": "DTTR_PCDOGS_F_Camera_CalculatePosition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_CALCULATE_POSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_CALCULATE_POSITION"
        }
      }
    },
    "Camera_Frustum": {
      "type": {
        "members": [
          {
            "type": "Camera_FrustumClipPlane",
            "name": "clip_planes[5]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "state_flags[2]",
            "offset": 80,
            "doc": null
          },
          {
            "type": "D3D_IDirect3DDevice7*",
            "name": "d3d_device",
            "offset": 88,
            "doc": null
          },
          {
            "type": "Math_Vec2I32",
            "name": "viewport_pos",
            "offset": 92,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "viewport_w",
            "offset": 100,
            "doc": null
          }
        ],
        "size": 104,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_Frustum"
        }
      }
    },
    "Camera_FrustumClipPlane": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I32",
            "name": "normal",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "distance",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_FrustumClipPlane"
        }
      }
    },
    "Camera_FrustumDirEntry": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "dir",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "pad",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "One int16 frustum direction triple plus padding (stride 8).",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_FrustumDirEntry"
        }
      }
    },
    "Camera_FrustumDirTable": {
      "type": {
        "members": [
          {
            "type": "Camera_FrustumDirEntry",
            "name": "v[5]",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 40,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Five frustum direction entries written by Camera_BuildViewMatrix and embedded in Camera_Runtime at +0x30.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_FrustumDirTable"
        }
      }
    },
    "Camera_FrustumPlane": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I32",
            "name": "normal",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_FrustumPlane"
        }
      }
    },
    "Camera_Initialize": {
      "function": {
        "analysis": {
          "en": {
            "address": 4475776,
            "rva": 281472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetDefaultFOV"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4483616,
            "rva": 289312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetDefaultFOV"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4483392,
            "rva": 289088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetDefaultFOV"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "camera",
              "type": "Camera_Runtime*",
              "docs": "Camera runtime initialized with default clip distance, viewport, and fade fields. The pointer actually addresses the full render list-state block; Camera_Runtime is its prefix and the shake/roll tail fields beyond it are also initialized."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 00 F0 FF 7F E8 ??",
          "match_offset": -10
        },
        "docs": "Initializes camera defaults, applies the 640x480 viewport, and clears the two fade/transition counters.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 622,
          "symbol_index": 622,
          "accessor": "DTTR_PCDOGS_F_Camera_Initialize",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_INITIALIZE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_INITIALIZE"
        }
      }
    },
    "Camera_InterpolateTransition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4226048,
            "rva": 31744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_InterpolateTransition_Paused"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 689,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4226512,
            "rva": 32208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_InterpolateTransition_Paused"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 689,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4226512,
            "rva": 32208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_InterpolateTransition_Paused"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 689,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "transition_state",
              "type": "Camera_TransitionState*",
              "docs": "Live camera transition state whose embedded pose is eased toward target_pose."
            },
            {
              "name": "target_pose",
              "type": "Camera_Pose*",
              "docs": "Target/scratch pose built by Camera_UpdateFollow or Camera_UpdateFromDefinition."
            },
            {
              "name": "duration_frames",
              "type": "int32_t",
              "docs": "Total transition frame count; known callers pass 30, a remaining scripted span, or camera definition duration."
            },
            {
              "name": "recompute_eye_from_angles",
              "type": "int32_t",
              "docs": "Nonzero interpolates the first two angle words and recomputes eye position from target distance."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Camera_InterpolateTransition_Paused"
            },
            "instr_offset": 22,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 10 A1 ??",
          "match_offset": 0
        },
        "docs": "Eases an active camera transition from transition_state->pose toward target_pose using camera_transition_frame_counter as the remaining countdown. It interpolates fov, target position, and orbit yaw with a Q12 ease curve; when requested it also wrap-interpolates the first two angle words and calls Camera_CalculatePosition.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 78,
          "symbol_index": 78,
          "accessor": "DTTR_PCDOGS_F_Camera_InterpolateTransition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_INTERPOLATE_TRANSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_INTERPOLATE_TRANSITION"
        }
      }
    },
    "Camera_InterpolateTransition_Paused": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551136,
            "rva": 356832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559472,
            "rva": 365168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559456,
            "rva": 365152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_InterpolateTransition"
            },
            "instr_offset": 22,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 348,
          "symbol_index": 348,
          "accessor": "DTTR_PCDOGS_D_Camera_InterpolateTransition_Paused",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_INTERPOLATE_TRANSITION_PAUSED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_INTERPOLATE_TRANSITION_PAUSED"
        }
      }
    },
    "Camera_Pose": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "angle_vertical",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "angle_horizontal",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "view_roll",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "fov",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "distance_or_clip",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Math_Vec3I32XZY",
            "name": "eye_pos",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_Vec3I32XZY",
            "name": "target_pos",
            "offset": 24,
            "doc": null
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_Pose"
        }
      }
    },
    "Camera_RecomputePitchYawFromEyeTarget": {
      "function": {
        "analysis": {
          "en": {
            "address": 4475600,
            "rva": 281296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4483440,
            "rva": 289136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4483216,
            "rva": 288912,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "pose",
              "type": "Camera_Pose*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? 8B 4D EC 8B 55",
          "match_offset": -98
        },
        "docs": "Recomputes pose pitch/yaw from the pose eye and target positions (the inverse of a look-at).",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 621,
          "symbol_index": 621,
          "accessor": "DTTR_PCDOGS_F_Camera_RecomputePitchYawFromEyeTarget",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_RECOMPUTE_PITCH_YAW_FROM_EYE_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_RECOMPUTE_PITCH_YAW_FROM_EYE_TARGET"
        }
      }
    },
    "Camera_RenderData": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "mode",
            "offset": 1,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "state",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "pitch",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "yaw",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "roll",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "fov_angle",
            "offset": 10,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "clip_distance",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_Vec2I32",
            "name": "position_xy",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "target_x",
            "offset": 24,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "target_z",
            "offset": 28,
            "doc": null
          },
          {
            "type": "Math_Vec2I16",
            "name": "viewport_pos",
            "offset": 32,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "view_matrix[20]",
            "offset": 36,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "combined_view_matrix[48]",
            "offset": 76,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "viewport_clip_data[12]",
            "offset": 124,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "world_rot_reserved",
            "offset": 136,
            "doc": "Reserved word after camera view matrix data."
          },
          {
            "type": "uint8_t",
            "name": "reserved_8a[2]",
            "offset": 138,
            "doc": "Reserved bytes before view translation fields. It is reserved for internal use."
          },
          {
            "type": "Math_Vec2I32",
            "name": "view_translation_xy",
            "offset": 140,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "position_z",
            "offset": 148,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "near_clip_distance",
            "offset": 152,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "max_render_distance",
            "offset": 156,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "projection_extra[8]",
            "offset": 160,
            "doc": null
          },
          {
            "type": "void*",
            "name": "scene_setup_callback",
            "offset": 168,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_ac[24]",
            "offset": 172,
            "doc": "Reserved trailing camera-render scratch block after scene_setup_callback."
          }
        ],
        "size": 196,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_RenderData"
        }
      }
    },
    "Camera_Runtime": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "pose_state_flags",
            "offset": 0,
            "doc": "Camera pose/state flag word (previously misread as a yaw angle)."
          },
          {
            "type": "int16_t",
            "name": "pitch",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "look_pitch",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "look_yaw",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "view_roll",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "fov",
            "offset": 10,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "focal_distance",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_Vec3I32XZY",
            "name": "eye_pos",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Math_Vec3I32XZY",
            "name": "target_pos",
            "offset": 28,
            "doc": null
          },
          {
            "type": "Entity_State*",
            "name": "active_entity_slot_ptr",
            "offset": 40,
            "doc": null
          },
          {
            "type": "Math_SizeI16",
            "name": "screen_half",
            "offset": 44,
            "doc": "This holds the full display-mode size (640x480)"
          },
          {
            "type": "Camera_FrustumDirTable",
            "name": "frustum_dirs",
            "offset": 48,
            "doc": "Five int16 frustum direction triples (stride 8) written by Camera_BuildViewMatrix; previously misread as a view matrix plus planes."
          },
          {
            "type": "int32_t",
            "name": "frustum_plane_1_z",
            "offset": 88,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "frustum_plane_2_x",
            "offset": 92,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "frustum_plane_2_y",
            "offset": 96,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "frustum_plane_2_z",
            "offset": 100,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "frustum_plane_3_x",
            "offset": 104,
            "doc": null
          }
        ],
        "size": 108,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_Runtime"
        }
      }
    },
    "Camera_SetDefaultFOV": {
      "function": {
        "analysis": {
          "en": {
            "address": 4475424,
            "rva": 281120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateClipDistance"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_Initialize"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4483264,
            "rva": 288960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateClipDistance"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_Initialize"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4483040,
            "rva": 288736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateClipDistance"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_Initialize"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "camera",
              "type": "Camera_Runtime*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "66 C7 40 0A 0F 03 E8 ??",
          "match_offset": -10
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 619,
          "symbol_index": 619,
          "accessor": "DTTR_PCDOGS_F_Camera_SetDefaultFOV",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_SET_DEFAULT_FOV",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_SET_DEFAULT_FOV"
        }
      }
    },
    "Camera_SetViewport": {
      "function": {
        "analysis": {
          "en": {
            "address": 4475456,
            "rva": 281152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetViewport_FarClipPlane"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetViewport_Height"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateClipDistance"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetDefaultFOV"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_Initialize"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4483296,
            "rva": 288992,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetViewport_FarClipPlane"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetViewport_Height"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateClipDistance"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetDefaultFOV"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_Initialize"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4483072,
            "rva": 288768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetViewport_FarClipPlane"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetViewport_Height"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateClipDistance"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetDefaultFOV"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_Initialize"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "viewport_x",
              "type": "int16_t"
            },
            {
              "name": "viewport_y",
              "type": "int16_t"
            },
            {
              "name": "viewport_w",
              "type": "int16_t"
            },
            {
              "name": "viewport_h",
              "type": "int16_t"
            },
            {
              "name": "apply_projection",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetViewport_Height"
            },
            "instr_offset": 54,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetViewport_FarClipPlane"
            },
            "instr_offset": 60,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "66 8B 54 24 0C 66 A3 ??",
          "match_offset": -10
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 620,
          "symbol_index": 620,
          "accessor": "DTTR_PCDOGS_F_Camera_SetViewport",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_SET_VIEWPORT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_SET_VIEWPORT"
        }
      }
    },
    "Camera_SetViewport_FarClipPlane": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439756,
            "rva": 2245452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449996,
            "rva": 2255692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449420,
            "rva": 2255116,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetViewport"
            },
            "instr_offset": 60,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 737,
          "symbol_index": 737,
          "accessor": "DTTR_PCDOGS_D_Camera_SetViewport_FarClipPlane",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SET_VIEWPORT_FAR_CLIP_PLANE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SET_VIEWPORT_FAR_CLIP_PLANE"
        }
      }
    },
    "Camera_SetViewport_Height": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439754,
            "rva": 2245450,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449994,
            "rva": 2255690,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449418,
            "rva": 2255114,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetViewport"
            },
            "instr_offset": 54,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 736,
          "symbol_index": 736,
          "accessor": "DTTR_PCDOGS_D_Camera_SetViewport_Height",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SET_VIEWPORT_HEIGHT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SET_VIEWPORT_HEIGHT"
        }
      }
    },
    "Camera_SetupClipPlanes": {
      "function": {
        "analysis": {
          "en": {
            "address": 4284112,
            "rva": 89808,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_BottomPlaneCoeff0"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_BottomPlaneCoeff1"
                },
                "instr_offset": 442,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_BottomPlaneCoeff2"
                },
                "instr_offset": 448,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_D3DState"
                },
                "instr_offset": 91,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_FOVAngleScale"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_LeftPlaneCoeff1"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_LeftPlaneCoeff2"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipDistanceSource"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff0"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff1"
                },
                "instr_offset": 287,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff2"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_RightPlaneCoeff0"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_RightPlaneCoeff1"
                },
                "instr_offset": 344,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_RightPlaneCoeff2"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_TopPlaneCoeff0"
                },
                "instr_offset": 367,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_TopPlaneCoeff1"
                },
                "instr_offset": 401,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_TopPlaneCoeff2"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 411,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4284608,
            "rva": 90304,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_BottomPlaneCoeff0"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_BottomPlaneCoeff1"
                },
                "instr_offset": 442,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_BottomPlaneCoeff2"
                },
                "instr_offset": 448,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_D3DState"
                },
                "instr_offset": 91,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_FOVAngleScale"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_LeftPlaneCoeff1"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_LeftPlaneCoeff2"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipDistanceSource"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff0"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff1"
                },
                "instr_offset": 287,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff2"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_RightPlaneCoeff0"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_RightPlaneCoeff1"
                },
                "instr_offset": 344,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_RightPlaneCoeff2"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_TopPlaneCoeff0"
                },
                "instr_offset": 367,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_TopPlaneCoeff1"
                },
                "instr_offset": 401,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_TopPlaneCoeff2"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 411,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4284608,
            "rva": 90304,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_BottomPlaneCoeff0"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_BottomPlaneCoeff1"
                },
                "instr_offset": 442,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_BottomPlaneCoeff2"
                },
                "instr_offset": 448,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_D3DState"
                },
                "instr_offset": 91,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_FOVAngleScale"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_LeftPlaneCoeff1"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_LeftPlaneCoeff2"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipDistanceSource"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff0"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff1"
                },
                "instr_offset": 287,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff2"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_RightPlaneCoeff0"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_RightPlaneCoeff1"
                },
                "instr_offset": 344,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_RightPlaneCoeff2"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_TopPlaneCoeff0"
                },
                "instr_offset": 367,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_TopPlaneCoeff1"
                },
                "instr_offset": 401,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupClipPlanes_TopPlaneCoeff2"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFaceNormal"
                },
                "instr_offset": 411,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "projection_depth",
              "type": "float"
            },
            {
              "name": "screen_half_width",
              "type": "int32_t"
            },
            {
              "name": "screen_half_height",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_FOVAngleScale"
            },
            "instr_offset": 23,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_D3DState"
            },
            "instr_offset": 91,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_LeftPlaneCoeff1"
            },
            "instr_offset": 198,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_LeftPlaneCoeff2"
            },
            "instr_offset": 207,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_RightPlaneCoeff0"
            },
            "instr_offset": 241,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_RightPlaneCoeff1"
            },
            "instr_offset": 344,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_RightPlaneCoeff2"
            },
            "instr_offset": 358,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_TopPlaneCoeff0"
            },
            "instr_offset": 367,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_TopPlaneCoeff1"
            },
            "instr_offset": 401,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_TopPlaneCoeff2"
            },
            "instr_offset": 431,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_BottomPlaneCoeff0"
            },
            "instr_offset": 437,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_BottomPlaneCoeff1"
            },
            "instr_offset": 442,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_BottomPlaneCoeff2"
            },
            "instr_offset": 448,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff0"
            },
            "instr_offset": 278,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff1"
            },
            "instr_offset": 287,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_NearClipPlaneCoeff2"
            },
            "instr_offset": 321,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupClipPlanes_NearClipDistanceSource"
            },
            "instr_offset": 11,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 34 DB 44 24 3C 8B 44 24 38 8B 15 ??",
          "match_offset": 0
        },
        "docs": "Initializes the near plane and the four camera-pyramid side clip-plane globals from projection depth and screen half extents; no semantic return value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 203,
          "symbol_index": 203,
          "accessor": "DTTR_PCDOGS_F_Camera_SetupClipPlanes",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_SETUP_CLIP_PLANES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_SETUP_CLIP_PLANES"
        }
      }
    },
    "Camera_SetupClipPlanes_BottomPlaneCoeff0": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908180,
            "rva": 22713876,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919444,
            "rva": 22725140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918868,
            "rva": 22724564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 437,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Bottom clip-plane coefficient 0 written while building the camera clip-plane set.",
        "sdk": {
          "id": 896,
          "symbol_index": 896,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_BottomPlaneCoeff0",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_BOTTOM_PLANE_COEFF0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_BOTTOM_PLANE_COEFF0"
        }
      }
    },
    "Camera_SetupClipPlanes_BottomPlaneCoeff1": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908184,
            "rva": 22713880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 442,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919448,
            "rva": 22725144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 442,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918872,
            "rva": 22724568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 442,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 442,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Bottom clip-plane coefficient 1 written while building the camera clip-plane set.",
        "sdk": {
          "id": 897,
          "symbol_index": 897,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_BottomPlaneCoeff1",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_BOTTOM_PLANE_COEFF1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_BOTTOM_PLANE_COEFF1"
        }
      }
    },
    "Camera_SetupClipPlanes_BottomPlaneCoeff2": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908188,
            "rva": 22713884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 448,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919452,
            "rva": 22725148,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 448,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918876,
            "rva": 22724572,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 448,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 448,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Bottom clip-plane coefficient 2 written while building the camera clip-plane set.",
        "sdk": {
          "id": 898,
          "symbol_index": 898,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_BottomPlaneCoeff2",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_BOTTOM_PLANE_COEFF2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_BOTTOM_PLANE_COEFF2"
        }
      }
    },
    "Camera_SetupClipPlanes_D3DState": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908128,
            "rva": 22713824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 91,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919392,
            "rva": 22725088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 91,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918816,
            "rva": 22724512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 91,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 91,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 886,
          "symbol_index": 886,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_D3DState",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_D3D_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_D3D_STATE"
        }
      }
    },
    "Camera_SetupClipPlanes_FOVAngleScale": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509732,
            "rva": 315428,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517924,
            "rva": 323620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517924,
            "rva": 323620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 23,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 74,
          "symbol_index": 74,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_FOVAngleScale",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_FOV_ANGLE_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_FOV_ANGLE_SCALE"
        }
      }
    },
    "Camera_SetupClipPlanes_LeftPlaneCoeff1": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908148,
            "rva": 22713844,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919412,
            "rva": 22725108,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918836,
            "rva": 22724532,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 198,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Left clip-plane coefficient 1 written while building the camera clip-plane set.",
        "sdk": {
          "id": 888,
          "symbol_index": 888,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_LeftPlaneCoeff1",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_LEFT_PLANE_COEFF1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_LEFT_PLANE_COEFF1"
        }
      }
    },
    "Camera_SetupClipPlanes_LeftPlaneCoeff2": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908152,
            "rva": 22713848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919416,
            "rva": 22725112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918840,
            "rva": 22724536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 207,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 207,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Left clip-plane coefficient 2 written while building the camera clip-plane set.",
        "sdk": {
          "id": 889,
          "symbol_index": 889,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_LeftPlaneCoeff2",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_LEFT_PLANE_COEFF2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_LEFT_PLANE_COEFF2"
        }
      }
    },
    "Camera_SetupClipPlanes_NearClipDistanceSource": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908232,
            "rva": 22713928,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919496,
            "rva": 22725192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918920,
            "rva": 22724616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 11,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Near-clip distance source used while deriving clip-plane coefficients.",
        "sdk": {
          "id": 909,
          "symbol_index": 909,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_NearClipDistanceSource",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_NEAR_CLIP_DISTANCE_SOURCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_NEAR_CLIP_DISTANCE_SOURCE"
        }
      }
    },
    "Camera_SetupClipPlanes_NearClipPlaneCoeff0": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908196,
            "rva": 22713892,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919460,
            "rva": 22725156,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918884,
            "rva": 22724580,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 278,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Near clip-plane coefficient 0 written while building the camera clip-plane set.",
        "sdk": {
          "id": 900,
          "symbol_index": 900,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_NearClipPlaneCoeff0",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_NEAR_CLIP_PLANE_COEFF0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_NEAR_CLIP_PLANE_COEFF0"
        }
      }
    },
    "Camera_SetupClipPlanes_NearClipPlaneCoeff1": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908200,
            "rva": 22713896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 287,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919464,
            "rva": 22725160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 287,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918888,
            "rva": 22724584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 287,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 287,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Near clip-plane coefficient 1 written while building the camera clip-plane set.",
        "sdk": {
          "id": 901,
          "symbol_index": 901,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_NearClipPlaneCoeff1",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_NEAR_CLIP_PLANE_COEFF1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_NEAR_CLIP_PLANE_COEFF1"
        }
      }
    },
    "Camera_SetupClipPlanes_NearClipPlaneCoeff2": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908204,
            "rva": 22713900,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919468,
            "rva": 22725164,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918892,
            "rva": 22724588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 321,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Near clip-plane coefficient 2 written while building the camera clip-plane set.",
        "sdk": {
          "id": 902,
          "symbol_index": 902,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_NearClipPlaneCoeff2",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_NEAR_CLIP_PLANE_COEFF2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_NEAR_CLIP_PLANE_COEFF2"
        }
      }
    },
    "Camera_SetupClipPlanes_RightPlaneCoeff0": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908156,
            "rva": 22713852,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919420,
            "rva": 22725116,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918844,
            "rva": 22724540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 241,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Right clip-plane coefficient 0 written while building the camera clip-plane set.",
        "sdk": {
          "id": 890,
          "symbol_index": 890,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_RightPlaneCoeff0",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_RIGHT_PLANE_COEFF0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_RIGHT_PLANE_COEFF0"
        }
      }
    },
    "Camera_SetupClipPlanes_RightPlaneCoeff1": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908160,
            "rva": 22713856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 344,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919424,
            "rva": 22725120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 344,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918848,
            "rva": 22724544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 344,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 344,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Right clip-plane coefficient 1 written while building the camera clip-plane set.",
        "sdk": {
          "id": 891,
          "symbol_index": 891,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_RightPlaneCoeff1",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_RIGHT_PLANE_COEFF1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_RIGHT_PLANE_COEFF1"
        }
      }
    },
    "Camera_SetupClipPlanes_RightPlaneCoeff2": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908164,
            "rva": 22713860,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919428,
            "rva": 22725124,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918852,
            "rva": 22724548,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 358,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Right clip-plane coefficient 2 written while building the camera clip-plane set.",
        "sdk": {
          "id": 892,
          "symbol_index": 892,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_RightPlaneCoeff2",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_RIGHT_PLANE_COEFF2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_RIGHT_PLANE_COEFF2"
        }
      }
    },
    "Camera_SetupClipPlanes_TopPlaneCoeff0": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908168,
            "rva": 22713864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 367,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919432,
            "rva": 22725128,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 367,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918856,
            "rva": 22724552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 367,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 367,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Top clip-plane coefficient 0 written while building the camera clip-plane set.",
        "sdk": {
          "id": 893,
          "symbol_index": 893,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_TopPlaneCoeff0",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_TOP_PLANE_COEFF0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_TOP_PLANE_COEFF0"
        }
      }
    },
    "Camera_SetupClipPlanes_TopPlaneCoeff1": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908172,
            "rva": 22713868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 401,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919436,
            "rva": 22725132,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 401,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918860,
            "rva": 22724556,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 401,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 401,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Top clip-plane coefficient 1 written while building the camera clip-plane set.",
        "sdk": {
          "id": 894,
          "symbol_index": 894,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_TopPlaneCoeff1",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_TOP_PLANE_COEFF1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_TOP_PLANE_COEFF1"
        }
      }
    },
    "Camera_SetupClipPlanes_TopPlaneCoeff2": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908176,
            "rva": 22713872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919440,
            "rva": 22725136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918864,
            "rva": 22724560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupClipPlanes"
            },
            "instr_offset": 431,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Top clip-plane coefficient 2 written while building the camera clip-plane set.",
        "sdk": {
          "id": 895,
          "symbol_index": 895,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupClipPlanes_TopPlaneCoeff2",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_CLIP_PLANES_TOP_PLANE_COEFF2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_CLIP_PLANES_TOP_PLANE_COEFF2"
        }
      }
    },
    "Camera_SetupProjection": {
      "function": {
        "analysis": {
          "en": {
            "address": 4295360,
            "rva": 101056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_AspectCorrection"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_DebugPosScale"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_Divisor"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_FixedToFloat"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixFarW"
                },
                "instr_offset": 130,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixNearW"
                },
                "instr_offset": 106,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixOne"
                },
                "instr_offset": 120,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixXScale"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixYScale"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 514,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4295840,
            "rva": 101536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_AspectCorrection"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_DebugPosScale"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_Divisor"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_FixedToFloat"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixFarW"
                },
                "instr_offset": 130,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixNearW"
                },
                "instr_offset": 106,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixOne"
                },
                "instr_offset": 120,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixXScale"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixYScale"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 514,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4295840,
            "rva": 101536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_AspectCorrection"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_DebugPosScale"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_Divisor"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_FixedToFloat"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixFarW"
                },
                "instr_offset": 130,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixNearW"
                },
                "instr_offset": 106,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixOne"
                },
                "instr_offset": 120,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixXScale"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_SetupProjection_MatrixYScale"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 514,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "camera",
              "type": "Camera_Runtime*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupProjection_FixedToFloat"
            },
            "instr_offset": 161,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupProjection_AspectCorrection"
            },
            "instr_offset": 96,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupProjection_DebugPosScale"
            },
            "instr_offset": 54,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupProjection_Divisor"
            },
            "instr_offset": 15,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupProjection_MatrixXScale"
            },
            "instr_offset": 64,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupProjection_MatrixYScale"
            },
            "instr_offset": 140,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupProjection_MatrixNearW"
            },
            "instr_offset": 106,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupProjection_MatrixOne"
            },
            "instr_offset": 120,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_SetupProjection_MatrixFarW"
            },
            "instr_offset": 130,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0C 89 44 24 0C F7 35 ??",
          "match_offset": -10
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 223,
          "symbol_index": 223,
          "accessor": "DTTR_PCDOGS_F_Camera_SetupProjection",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_SETUP_PROJECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_SETUP_PROJECTION"
        }
      }
    },
    "Camera_SetupProjection_AspectCorrection": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509776,
            "rva": 315472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517968,
            "rva": 323664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517968,
            "rva": 323664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupProjection"
            },
            "instr_offset": 96,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 85,
          "symbol_index": 85,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupProjection_AspectCorrection",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_PROJECTION_ASPECT_CORRECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_PROJECTION_ASPECT_CORRECTION"
        }
      }
    },
    "Camera_SetupProjection_DebugPosScale": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509780,
            "rva": 315476,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517972,
            "rva": 323668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517972,
            "rva": 323668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupProjection"
            },
            "instr_offset": 54,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 86,
          "symbol_index": 86,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupProjection_DebugPosScale",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_PROJECTION_DEBUG_POS_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_PROJECTION_DEBUG_POS_SCALE"
        }
      }
    },
    "Camera_SetupProjection_Divisor": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515104,
            "rva": 320800,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523296,
            "rva": 328992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523296,
            "rva": 328992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupProjection"
            },
            "instr_offset": 15,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 124,
          "symbol_index": 124,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupProjection_Divisor",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_PROJECTION_DIVISOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_PROJECTION_DIVISOR"
        }
      }
    },
    "Camera_SetupProjection_FixedToFloat": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509772,
            "rva": 315468,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517964,
            "rva": 323660,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517964,
            "rva": 323660,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupProjection"
            },
            "instr_offset": 161,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 84,
          "symbol_index": 84,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupProjection_FixedToFloat",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_PROJECTION_FIXED_TO_FLOAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_PROJECTION_FIXED_TO_FLOAT"
        }
      }
    },
    "Camera_SetupProjection_MatrixFarW": {
      "data": {
        "analysis": {
          "en": {
            "address": 4560704,
            "rva": 366400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 130,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569040,
            "rva": 374736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 130,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569024,
            "rva": 374720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 130,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupProjection"
            },
            "instr_offset": 130,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 443,
          "symbol_index": 443,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupProjection_MatrixFarW",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_PROJECTION_MATRIX_FAR_W",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_PROJECTION_MATRIX_FAR_W"
        }
      }
    },
    "Camera_SetupProjection_MatrixNearW": {
      "data": {
        "analysis": {
          "en": {
            "address": 4560688,
            "rva": 366384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 106,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569024,
            "rva": 374720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 106,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569008,
            "rva": 374704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 106,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupProjection"
            },
            "instr_offset": 106,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 441,
          "symbol_index": 441,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupProjection_MatrixNearW",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_PROJECTION_MATRIX_NEAR_W",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_PROJECTION_MATRIX_NEAR_W"
        }
      }
    },
    "Camera_SetupProjection_MatrixOne": {
      "data": {
        "analysis": {
          "en": {
            "address": 4560692,
            "rva": 366388,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 120,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569028,
            "rva": 374724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 120,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569012,
            "rva": 374708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 120,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupProjection"
            },
            "instr_offset": 120,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 442,
          "symbol_index": 442,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupProjection_MatrixOne",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_PROJECTION_MATRIX_ONE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_PROJECTION_MATRIX_ONE"
        }
      }
    },
    "Camera_SetupProjection_MatrixXScale": {
      "data": {
        "analysis": {
          "en": {
            "address": 4560648,
            "rva": 366344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4568984,
            "rva": 374680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4568968,
            "rva": 374664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupProjection"
            },
            "instr_offset": 64,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 439,
          "symbol_index": 439,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupProjection_MatrixXScale",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_PROJECTION_MATRIX_X_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_PROJECTION_MATRIX_X_SCALE"
        }
      }
    },
    "Camera_SetupProjection_MatrixYScale": {
      "data": {
        "analysis": {
          "en": {
            "address": 4560668,
            "rva": 366364,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569004,
            "rva": 374700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4568988,
            "rva": 374684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_SetupProjection"
            },
            "instr_offset": 140,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 440,
          "symbol_index": 440,
          "accessor": "DTTR_PCDOGS_D_Camera_SetupProjection_MatrixYScale",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_SETUP_PROJECTION_MATRIX_Y_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_SETUP_PROJECTION_MATRIX_Y_SCALE"
        }
      }
    },
    "Camera_State": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "mode",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "cam_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "target_offset",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "fov_distance",
            "offset": 28,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "transition_speed",
            "offset": 30,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "flags",
            "offset": 32,
            "doc": null
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_State"
        }
      }
    },
    "Camera_TransitionMode": {
      "type": {
        "values": [
          {
            "name": "CAMERA_SNAP",
            "value": 0,
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "enum",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_TransitionMode"
        }
      }
    },
    "Camera_TransitionState": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "flags_and_state",
            "offset": 0,
            "doc": "Low byte has transition bit 0 cleared by Camera_InterpolateTransition."
          },
          {
            "type": "Camera_Pose",
            "name": "pose",
            "offset": 4,
            "doc": "Embedded live camera pose interpolated toward a target pose."
          }
        ],
        "size": 40,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Live camera-state prefix read by Camera_InterpolateTransition.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_TransitionState"
        }
      }
    },
    "Camera_UpdateEffects": {
      "function": {
        "analysis": {
          "en": {
            "address": 4265216,
            "rva": 70912,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateRollEffect"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateShakeOffset"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 379,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4265696,
            "rva": 71392,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateRollEffect"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateShakeOffset"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 389,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4265696,
            "rva": 71392,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateRollEffect"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateShakeOffset"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 389,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int16_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "62 00 E8 ?? ?? ?? ?? 83 C4 0C",
          "match_offset": -23
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 159,
          "symbol_index": 159,
          "accessor": "DTTR_PCDOGS_F_Camera_UpdateEffects",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_UPDATE_EFFECTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_UPDATE_EFFECTS"
        }
      }
    },
    "Camera_UpdateFollow": {
      "function": {
        "analysis": {
          "en": {
            "address": 4223456,
            "rva": 29152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_CurrentCameraCell"
                },
                "instr_offset": 720,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_DynamicLevelScale"
                },
                "instr_offset": 2571,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_TransitionFrameCounter"
                },
                "instr_offset": 1983,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_TransitionTrigger"
                },
                "instr_offset": 668,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_ActiveBufferPtr"
                },
                "instr_offset": 2157,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_BackingBuffer"
                },
                "instr_offset": 2162,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_StagingBufferPtr"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_TransitionAndSettingsFlags"
                },
                "instr_offset": 1978,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 2053,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 2065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 2558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateClipDistance"
                },
                "instr_offset": 2132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 2099,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 2139,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 2454,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 2214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearShadowList"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 2533,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 418,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1212,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 2566,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ExecuteBehaviorScript"
                },
                "instr_offset": 2236,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4223920,
            "rva": 29616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_CurrentCameraCell"
                },
                "instr_offset": 720,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_DynamicLevelScale"
                },
                "instr_offset": 2571,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_TransitionFrameCounter"
                },
                "instr_offset": 1983,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_TransitionTrigger"
                },
                "instr_offset": 668,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_ActiveBufferPtr"
                },
                "instr_offset": 2157,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_BackingBuffer"
                },
                "instr_offset": 2162,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_StagingBufferPtr"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_TransitionAndSettingsFlags"
                },
                "instr_offset": 1978,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 2053,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 2065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 2558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateClipDistance"
                },
                "instr_offset": 2132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 2099,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 2139,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 2454,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 2214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearShadowList"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 2533,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 418,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1212,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 2566,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ExecuteBehaviorScript"
                },
                "instr_offset": 2236,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4223920,
            "rva": 29616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_CurrentCameraCell"
                },
                "instr_offset": 720,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_DynamicLevelScale"
                },
                "instr_offset": 2571,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_TransitionFrameCounter"
                },
                "instr_offset": 1983,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Camera_UpdateFollow_TransitionTrigger"
                },
                "instr_offset": 668,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_ActiveBufferPtr"
                },
                "instr_offset": 2157,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_BackingBuffer"
                },
                "instr_offset": 2162,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_StagingBufferPtr"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_TransitionAndSettingsFlags"
                },
                "instr_offset": 1978,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 2053,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 2065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 2558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateClipDistance"
                },
                "instr_offset": 2132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 2099,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateProjection"
                },
                "instr_offset": 2139,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_IsInActiveList"
                },
                "instr_offset": 2454,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 2214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearShadowList"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 2533,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 418,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1212,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 2566,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ExecuteBehaviorScript"
                },
                "instr_offset": 2236,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "camera",
              "type": "Camera_Runtime*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Camera_UpdateFollow_CurrentCameraCell"
            },
            "instr_offset": 720,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "EntityNavigationWorkList_ActiveBufferPtr"
            },
            "instr_offset": 2157,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "EntityNavigationWorkList_StagingBufferPtr"
            },
            "instr_offset": 2147,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_UpdateFollow_TransitionTrigger"
            },
            "instr_offset": 668,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "EntityNavigationWorkList_BackingBuffer"
            },
            "instr_offset": 2162,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Game_TransitionAndSettingsFlags"
            },
            "instr_offset": 1978,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_UpdateFollow_TransitionFrameCounter"
            },
            "instr_offset": 1983,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Camera_UpdateFollow_DynamicLevelScale"
            },
            "instr_offset": 2571,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 64 53 56 57 E8 ??",
          "match_offset": 0
        },
        "docs": "Swaps active entity/navigation work-list buffers and queues entity slots for visibility and update work during camera follow processing.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 77,
          "symbol_index": 77,
          "accessor": "DTTR_PCDOGS_F_Camera_UpdateFollow",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_UPDATE_FOLLOW",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_UPDATE_FOLLOW"
        }
      }
    },
    "Camera_UpdateFollow_CurrentCameraCell": {
      "data": {
        "analysis": {
          "en": {
            "address": 4545832,
            "rva": 351528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 720,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554168,
            "rva": 359864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 720,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554152,
            "rva": 359848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 720,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_UpdateFollow"
            },
            "instr_offset": 720,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "engine_managed",
        "docs": "Camera_UpdateFollow transient current camera cell. This camera-owned runtime state is used across level/entity transitions; current_level_data entity slots are the actor/entity enumeration source.",
        "sdk": {
          "id": 325,
          "symbol_index": 325,
          "accessor": "DTTR_PCDOGS_D_Camera_UpdateFollow_CurrentCameraCell",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_UPDATE_FOLLOW_CURRENT_CAMERA_CELL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_UPDATE_FOLLOW_CURRENT_CAMERA_CELL"
        }
      }
    },
    "Camera_UpdateFollow_DynamicLevelScale": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830176,
            "rva": 23635872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2571,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841440,
            "rva": 23647136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2571,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840864,
            "rva": 23646560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2571,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_UpdateFollow"
            },
            "instr_offset": 2571,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Camera_UpdateFollow",
          "instr_offset": 2571,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Integer runtime level/render scale. Camera_UpdateFollow writes this value shifted left by 12 into Graphics_ListState.dynamic_level_scale.",
        "sdk": {
          "id": 962,
          "symbol_index": 962,
          "accessor": "DTTR_PCDOGS_D_Camera_UpdateFollow_DynamicLevelScale",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_UPDATE_FOLLOW_DYNAMIC_LEVEL_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_UPDATE_FOLLOW_DYNAMIC_LEVEL_SCALE"
        }
      }
    },
    "Camera_UpdateFollow_TransitionFrameCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551128,
            "rva": 356824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1983,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559464,
            "rva": 365160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1983,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559448,
            "rva": 365144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1983,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_UpdateFollow"
            },
            "instr_offset": 1983,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 346,
          "symbol_index": 346,
          "accessor": "DTTR_PCDOGS_D_Camera_UpdateFollow_TransitionFrameCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_UPDATE_FOLLOW_TRANSITION_FRAME_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_UPDATE_FOLLOW_TRANSITION_FRAME_COUNTER"
        }
      }
    },
    "Camera_UpdateFollow_TransitionTrigger": {
      "data": {
        "analysis": {
          "en": {
            "address": 4546240,
            "rva": 351936,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 668,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554576,
            "rva": 360272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 668,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554560,
            "rva": 360256,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 668,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_UpdateFollow"
            },
            "instr_offset": 668,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 335,
          "symbol_index": 335,
          "accessor": "DTTR_PCDOGS_D_Camera_UpdateFollow_TransitionTrigger",
          "sdk_id": "DTTR_PCDOGS_DATA_CAMERA_UPDATE_FOLLOW_TRANSITION_TRIGGER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CAMERA_UPDATE_FOLLOW_TRANSITION_TRIGGER"
        }
      }
    },
    "Camera_UpdateFromDefinition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4226944,
            "rva": 32640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 1214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 801,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2099,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4227408,
            "rva": 33104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 1214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 801,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2099,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4227408,
            "rva": 33104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_CalculatePosition"
                },
                "instr_offset": 1214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 801,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2099,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "camera",
              "type": "Camera_Runtime*"
            },
            {
              "name": "entity",
              "type": "Entity_State*"
            },
            {
              "name": "pose",
              "type": "Camera_Pose*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 20 8B 0D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 80,
          "symbol_index": 80,
          "accessor": "DTTR_PCDOGS_F_Camera_UpdateFromDefinition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_UPDATE_FROM_DEFINITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_UPDATE_FROM_DEFINITION"
        }
      }
    },
    "Camera_UpdateProjection": {
      "function": {
        "analysis": {
          "en": {
            "address": 4474032,
            "rva": 279728,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2139,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4481872,
            "rva": 287568,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2139,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4481648,
            "rva": 287344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2139,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "camera",
              "type": "Camera_Runtime*"
            },
            {
              "name": "focal_distance",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "2C 8D 4E 30 50 51 E8 ??",
          "match_offset": -20
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 616,
          "symbol_index": 616,
          "accessor": "DTTR_PCDOGS_F_Camera_UpdateProjection",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_UPDATE_PROJECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_UPDATE_PROJECTION"
        }
      }
    },
    "Camera_UpdateRollEffect": {
      "function": {
        "analysis": {
          "en": {
            "address": 4265360,
            "rva": 71056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4265840,
            "rva": 71536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4265840,
            "rva": 71536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int16_t",
          "params": [
            {
              "name": "camera",
              "type": "Camera_Runtime*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E0 0C 99 F7 F9 50 E8 ??",
          "match_offset": -67
        },
        "docs": "Updates the camera view-roll effect state and returns the current roll value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 160,
          "symbol_index": 160,
          "accessor": "DTTR_PCDOGS_F_Camera_UpdateRollEffect",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_UPDATE_ROLL_EFFECT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_UPDATE_ROLL_EFFECT"
        }
      }
    },
    "Camera_UpdateShakeOffset": {
      "function": {
        "analysis": {
          "en": {
            "address": 4265264,
            "rva": 70960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4265744,
            "rva": 71440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4265744,
            "rva": 71440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "camera",
              "type": "Camera_Runtime*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 51 8B 4D 08 66 8B 81 D4 00 01 00",
          "match_offset": 0
        },
        "docs": "Applies late camera shake state after Camera_UpdateFollow by using a countdown, intensity value, and shake lookup table.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 85,
          "symbol_index": 85,
          "accessor": "DTTR_PCDOGS_F_Camera_UpdateShakeOffset",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CAMERA_UPDATE_SHAKE_OFFSET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CAMERA_UPDATE_SHAKE_OFFSET"
        }
      }
    },
    "Camera_ViewRecord": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "pos",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "activation_radius",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "actor_activation_radius",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "camera_def_index",
            "offset": 24,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "entity_index",
            "offset": 26,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "neighbor_entity_links[8]",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "zone_boundaries[32]",
            "offset": 36,
            "doc": null
          },
          {
            "type": "PKG_ActorTemplate*",
            "name": "actor_template",
            "offset": 68,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "action_data[2]",
            "offset": 72,
            "doc": null
          },
          {
            "type": "int32_t*",
            "name": "camera_path_data",
            "offset": 80,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "path_parameters[16]",
            "offset": 84,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "camera_collision_volume[84]",
            "offset": 100,
            "doc": null
          },
          {
            "type": "int32_t*",
            "name": "transform_pointer",
            "offset": 184,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "view_transform_matrix[44]",
            "offset": 188,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "rotation_calc",
            "offset": 232,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "camera_anim_state[52]",
            "offset": 236,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "spawned_actor",
            "offset": 288,
            "doc": "References the spawned live actor when present; actor lifetime and list ownership remain with actor/entity systems."
          },
          {
            "type": "uint8_t",
            "name": "linked_actor_data[16]",
            "offset": 292,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "timestamp",
            "offset": 308,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "transition_timers[20]",
            "offset": 312,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "target_pos",
            "offset": 332,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "look_at_target_data[32]",
            "offset": 344,
            "doc": null
          }
        ],
        "size": 376,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Package/runtime camera-view record keyed by an entity index. It owns camera/link data and can reference a spawned live actor; actor/entity systems own actor lifetime and list membership.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Camera_ViewRecord"
        }
      }
    },
    "Checkers_AIDifficulty": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830140,
            "rva": 23635836,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1432,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841404,
            "rva": 23647100,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1432,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840828,
            "rva": 23646524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1432,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 1432,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Checkers AI difficulty selector read by the state machine.",
        "sdk": {
          "id": 935,
          "symbol_index": 935,
          "accessor": "DTTR_PCDOGS_D_Checkers_AIDifficulty",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_AI_DIFFICULTY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_AI_DIFFICULTY"
        }
      }
    },
    "Checkers_AnimateMoveSequence": {
      "function": {
        "analysis": {
          "en": {
            "address": 4271376,
            "rva": 77072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1041,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1272,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4271856,
            "rva": 77552,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1041,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1272,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4271856,
            "rva": 77552,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1041,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1272,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "move_data",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C6 89 74 24 08 0F 8E ??",
          "match_offset": -16
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 175,
          "symbol_index": 175,
          "accessor": "DTTR_PCDOGS_F_Checkers_AnimateMoveSequence",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_ANIMATE_MOVE_SEQUENCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_ANIMATE_MOVE_SEQUENCE"
        }
      }
    },
    "Checkers_Board": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "col0[4]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "col1[4]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "col2[4]",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "col3[4]",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "col4[4]",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "col5[4]",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "col6[4]",
            "offset": 24,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "col7[4]",
            "offset": 28,
            "doc": null
          }
        ],
        "size": 32,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "8x4 checkers board stored as eight 4-byte columns (playable dark squares only).",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Checkers_Board"
        }
      }
    },
    "Checkers_BuildMoveList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4267888,
            "rva": 73584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 330,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 457,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 539,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1136,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4268368,
            "rva": 74064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 330,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 457,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 539,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1136,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4268368,
            "rva": 74064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 330,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 457,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckMoveValid"
                },
                "instr_offset": 539,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1136,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "board_state",
              "type": "int32_t"
            },
            {
              "name": "player",
              "type": "int32_t"
            },
            {
              "name": "move_list",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E7 01 83 FF 08 0F 8D ??",
          "match_offset": -50
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 165,
          "symbol_index": 165,
          "accessor": "DTTR_PCDOGS_F_Checkers_BuildMoveList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_BUILD_MOVE_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_BUILD_MOVE_LIST"
        }
      }
    },
    "Checkers_CenterCameraOnCell": {
      "function": {
        "analysis": {
          "en": {
            "address": 4267712,
            "rva": 73408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4268192,
            "rva": 73888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4268192,
            "rva": 73888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 0C 8B 0D ?? ?? ?? ?? A1",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 164,
          "symbol_index": 164,
          "accessor": "DTTR_PCDOGS_F_Checkers_CenterCameraOnCell",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_CENTER_CAMERA_ON_CELL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_CENTER_CAMERA_ON_CELL"
        }
      }
    },
    "Checkers_CheckCapturePossible": {
      "function": {
        "analysis": {
          "en": {
            "address": 4268784,
            "rva": 74480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_CheckCapturePossible_PieceTypeDispatchTable"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4269264,
            "rva": 74960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_CheckCapturePossible_PieceTypeDispatchTable"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4269264,
            "rva": 74960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_CheckCapturePossible_PieceTypeDispatchTable"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "board",
              "type": "Checkers_Board*",
              "docs": "Packed 32-playable-square checkers board, addressed as four stored cells per row."
            },
            {
              "name": "piece",
              "type": "int32_t",
              "docs": "Piece code at the queried square; known move logic treats 1/2 as men and 5/6 as kings."
            },
            {
              "name": "row",
              "type": "int32_t",
              "docs": "Zero-based source row to inspect for available captures."
            },
            {
              "name": "col",
              "type": "int32_t",
              "docs": "Zero-based source column to inspect for available captures."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Checkers_CheckCapturePossible_PieceTypeDispatchTable"
            },
            "instr_offset": 32,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 53 55 56 57 8D 78 FF 83 FF 05 ??",
          "match_offset": 0
        },
        "docs": "Checks whether the checkers piece at (row, col) has any legal capture available in the directions allowed by its piece type. Board storage is the packed 32-square checkers layout used throughout the mini-game.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 167,
          "symbol_index": 167,
          "accessor": "DTTR_PCDOGS_F_Checkers_CheckCapturePossible",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_CHECK_CAPTURE_POSSIBLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_CHECK_CAPTURE_POSSIBLE"
        }
      }
    },
    "Checkers_CheckCapturePossible_PieceTypeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4269256,
            "rva": 74952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4269736,
            "rva": 75432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4269736,
            "rva": 75432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_CheckCapturePossible"
            },
            "instr_offset": 32,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Checkers_CheckCapturePossible",
          "instr_offset": 32,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Six-entry uint32_t jump table for Checkers_CheckCapturePossible piece values 1..6. Pieces 1/2 are men, 5/6 are kings, and 3/4 fall through to the no-capture path.",
        "sdk": {
          "id": 28,
          "symbol_index": 28,
          "accessor": "DTTR_PCDOGS_D_Checkers_CheckCapturePossible_PieceTypeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_CHECK_CAPTURE_POSSIBLE_PIECE_TYPE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_CHECK_CAPTURE_POSSIBLE_PIECE_TYPE_DISPATCH_TABLE"
        }
      }
    },
    "Checkers_CheckMoveValid": {
      "function": {
        "analysis": {
          "en": {
            "address": 4268608,
            "rva": 74304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 330,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 457,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 539,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4269088,
            "rva": 74784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 330,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 457,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 539,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4269088,
            "rva": 74784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 330,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 457,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 539,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "board",
              "type": "Checkers_Board*",
              "docs": "Packed 32-playable-square checkers board, addressed as four stored cells per row."
            },
            {
              "name": "from_row",
              "type": "int32_t"
            },
            {
              "name": "from_col",
              "type": "int32_t"
            },
            {
              "name": "to_row",
              "type": "int32_t"
            },
            {
              "name": "to_col",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 54 24 10 8B 44 24 14 8B CA 56 0B C8 57 F7 C1 ?? ?? ?? ?? 75 ??",
          "match_offset": 0
        },
        "docs": "Validates a one-square checkers move against board bounds, destination occupancy, and piece direction/king rules.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 166,
          "symbol_index": 166,
          "accessor": "DTTR_PCDOGS_F_Checkers_CheckMoveValid",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_CHECK_MOVE_VALID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_CHECK_MOVE_VALID"
        }
      }
    },
    "Checkers_EvaluateBoardScore": {
      "function": {
        "analysis": {
          "en": {
            "address": 4271104,
            "rva": 76800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4271584,
            "rva": 77280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4271584,
            "rva": 77280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "board",
              "type": "Checkers_Board*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E0 01 83 F8 08 0F 8D ??",
          "match_offset": -16
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 174,
          "symbol_index": 174,
          "accessor": "DTTR_PCDOGS_F_Checkers_EvaluateBoardScore",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_EVALUATE_BOARD_SCORE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_EVALUATE_BOARD_SCORE"
        }
      }
    },
    "Checkers_ExecuteMove": {
      "function": {
        "analysis": {
          "en": {
            "address": 4269920,
            "rva": 75616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMoveSequence"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_StepRecursiveSolver"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4270400,
            "rva": 76096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMoveSequence"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_StepRecursiveSolver"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4270400,
            "rva": 76096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMoveSequence"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_StepRecursiveSolver"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "board",
              "type": "Checkers_Board*"
            },
            {
              "name": "from_col",
              "type": "int32_t"
            },
            {
              "name": "from_row",
              "type": "int32_t"
            },
            {
              "name": "to_col",
              "type": "int32_t"
            },
            {
              "name": "to_row",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "24 57 50 53 51 56 E8 ??",
          "match_offset": -23
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 170,
          "symbol_index": 170,
          "accessor": "DTTR_PCDOGS_F_Checkers_ExecuteMove",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_EXECUTE_MOVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_EXECUTE_MOVE"
        }
      }
    },
    "Checkers_ExecuteMoveSequence": {
      "function": {
        "analysis": {
          "en": {
            "address": 4270480,
            "rva": 76176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4270960,
            "rva": 76656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4270960,
            "rva": 76656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "board",
              "type": "Checkers_Board*"
            },
            {
              "name": "move_sequence",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "07 57 56 52 51 50 E8 ??",
          "match_offset": -32
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 172,
          "symbol_index": 172,
          "accessor": "DTTR_PCDOGS_F_Checkers_ExecuteMoveSequence",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_EXECUTE_MOVE_SEQUENCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_EXECUTE_MOVE_SEQUENCE"
        }
      }
    },
    "Checkers_FindValidMoves": {
      "function": {
        "analysis": {
          "en": {
            "address": 4269280,
            "rva": 74976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_StepRecursiveSolver"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 60,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4269760,
            "rva": 75456,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_StepRecursiveSolver"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 60,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4269760,
            "rva": 75456,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_StepRecursiveSolver"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 60,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "board",
              "type": "Checkers_Board*",
              "docs": "Packed 32-square checkers board copied before recursive capture expansion."
            },
            {
              "name": "from_row",
              "type": "int32_t"
            },
            {
              "name": "from_col",
              "type": "int32_t"
            },
            {
              "name": "move_cursor",
              "type": "int32_t**",
              "docs": "Pointer to the current four-int move record cursor; advanced as legal moves are emitted."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "F0 89 74 24 04 0F 8F ??",
          "match_offset": -15
        },
        "docs": "Enumerates legal moves from one checkers board coordinate into a cursor of move records. The function reads a board pointer, source row/column, and an int32_t** cursor, then copies the board for recursive capture expansion.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 168,
          "symbol_index": 168,
          "accessor": "DTTR_PCDOGS_F_Checkers_FindValidMoves",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_FIND_VALID_MOVES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_FIND_VALID_MOVES"
        }
      }
    },
    "Checkers_GameBoard": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551328,
            "rva": 357024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559664,
            "rva": 365360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559648,
            "rva": 365344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 225,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Checkers_Board",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Checkers_UpdateStateMachine",
          "instr_offset": 225,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Checkers board passed to board initialization, move generation, move execution, and AI search.",
        "sdk": {
          "id": 365,
          "symbol_index": 365,
          "accessor": "DTTR_PCDOGS_D_Checkers_GameBoard",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_GAME_BOARD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_GAME_BOARD"
        }
      }
    },
    "Checkers_HighlightPlayerPieces": {
      "function": {
        "analysis": {
          "en": {
            "address": 4271680,
            "rva": 77376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1201,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4272160,
            "rva": 77856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1201,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4272160,
            "rva": 77856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1201,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "board",
              "type": "Checkers_Board*"
            },
            {
              "name": "player",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E6 01 83 FE 08 0F 8D ??",
          "match_offset": -13
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 177,
          "symbol_index": 177,
          "accessor": "DTTR_PCDOGS_F_Checkers_HighlightPlayerPieces",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_HIGHLIGHT_PLAYER_PIECES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_HIGHLIGHT_PLAYER_PIECES"
        }
      }
    },
    "Checkers_InitializeBoard": {
      "function": {
        "analysis": {
          "en": {
            "address": 4271584,
            "rva": 77280,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 247,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4272064,
            "rva": 77760,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 247,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4272064,
            "rva": 77760,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 247,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "board",
              "type": "Checkers_Board*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 57 33 C9 33 C0 8D 14 08 F6 C2 ??",
          "match_offset": 0
        },
        "docs": "Initializes the checkers board: playable dark squares in rows 0-2 become player 1 pieces, rows 3-4 become empty, and rows 5-7 become player 2 pieces.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 176,
          "symbol_index": 176,
          "accessor": "DTTR_PCDOGS_F_Checkers_InitializeBoard",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_INITIALIZE_BOARD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_INITIALIZE_BOARD"
        }
      }
    },
    "Checkers_ProcessInputAndRender": {
      "function": {
        "analysis": {
          "en": {
            "address": 4267424,
            "rva": 73120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CenterCameraOnCell"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1025,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1247,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1567,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4267904,
            "rva": 73600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CenterCameraOnCell"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1025,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1247,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1567,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4267904,
            "rva": 73600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CenterCameraOnCell"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1025,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1247,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1567,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 35 ?? ?? ?? ?? 57 33",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 163,
          "symbol_index": 163,
          "accessor": "DTTR_PCDOGS_F_Checkers_ProcessInputAndRender",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_PROCESS_INPUT_AND_RENDER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_PROCESS_INPUT_AND_RENDER"
        }
      }
    },
    "Checkers_SearchBestMove": {
      "function": {
        "analysis": {
          "en": {
            "address": 4270560,
            "rva": 76256,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMoveSequence"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1533,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4271040,
            "rva": 76736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMoveSequence"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1533,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4271040,
            "rva": 76736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMoveSequence"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1533,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "board",
              "type": "Checkers_Board*"
            },
            {
              "name": "depth",
              "type": "int32_t"
            },
            {
              "name": "out_move_4",
              "type": "int32_t*",
              "docs": "Optional four-int output record receiving the selected move."
            },
            {
              "name": "player",
              "type": "int32_t"
            },
            {
              "name": "alpha",
              "type": "int32_t"
            },
            {
              "name": "beta",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 81 EC EC",
          "match_offset": 0
        },
        "docs": "Recursive alpha-beta checkers AI search over a board; writes an optional four-int best-move record.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 173,
          "symbol_index": 173,
          "accessor": "DTTR_PCDOGS_F_Checkers_SearchBestMove",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_SEARCH_BEST_MOVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_SEARCH_BEST_MOVE"
        }
      }
    },
    "Checkers_StepRecursiveSolver": {
      "function": {
        "analysis": {
          "en": {
            "address": 4270112,
            "rva": 75808,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 182,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4270592,
            "rva": 76288,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 182,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4270592,
            "rva": 76288,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 182,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "board",
              "type": "Checkers_Board*"
            },
            {
              "name": "move_cursor",
              "type": "int32_t**"
            },
            {
              "name": "pack_shift",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 83 EC 40",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 171,
          "symbol_index": 171,
          "accessor": "DTTR_PCDOGS_F_Checkers_StepRecursiveSolver",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_STEP_RECURSIVE_SOLVER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_STEP_RECURSIVE_SOLVER"
        }
      }
    },
    "Checkers_UpdateCameraPositions": {
      "function": {
        "analysis": {
          "en": {
            "address": 4267136,
            "rva": 72832,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4267616,
            "rva": 73312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4267616,
            "rva": 73312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 0C 8B 0D ?? ?? ?? ?? 53 8B",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 162,
          "symbol_index": 162,
          "accessor": "DTTR_PCDOGS_F_Checkers_UpdateCameraPositions",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_UPDATE_CAMERA_POSITIONS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_UPDATE_CAMERA_POSITIONS"
        }
      }
    },
    "Checkers_UpdateStateMachine": {
      "function": {
        "analysis": {
          "en": {
            "address": 4265488,
            "rva": 71184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ListenerCameraPos_Flag10Set"
                },
                "instr_offset": 115,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_AIDifficulty"
                },
                "instr_offset": 1432,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_GameBoard"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveFromCol"
                },
                "instr_offset": 1458,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveFromRow"
                },
                "instr_offset": 1452,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveToCol"
                },
                "instr_offset": 1446,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveToRow"
                },
                "instr_offset": 1437,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AINodeCounter"
                },
                "instr_offset": 1470,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AISearchJmpBuf"
                },
                "instr_offset": 1415,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIThinkTimeout"
                },
                "instr_offset": 1464,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos1X"
                },
                "instr_offset": 230,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos1Y"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos1Z"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos2X"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos2Y"
                },
                "instr_offset": 189,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos2Z"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CurrentPlayer"
                },
                "instr_offset": 261,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_DalmatianSpawnStates"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_EnforceCaptureRule"
                },
                "instr_offset": 621,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_MoveResult"
                },
                "instr_offset": 611,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_PlayerIsHuman"
                },
                "instr_offset": 977,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SaveGameWorld0CompletionBits"
                },
                "instr_offset": 1304,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedCol1"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedCol2"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedRow1"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedRow2"
                },
                "instr_offset": 48,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 200,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 363,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 690,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_AnimateMoveSequence"
                },
                "instr_offset": 1041,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_AnimateMoveSequence"
                },
                "instr_offset": 1272,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 1136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMoveSequence"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_HighlightPlayerPieces"
                },
                "instr_offset": 1201,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_InitializeBoard"
                },
                "instr_offset": 247,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1025,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1247,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1567,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 1533,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 1096,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4265968,
            "rva": 71664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ListenerCameraPos_Flag10Set"
                },
                "instr_offset": 115,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_AIDifficulty"
                },
                "instr_offset": 1432,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_GameBoard"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveFromCol"
                },
                "instr_offset": 1458,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveFromRow"
                },
                "instr_offset": 1452,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveToCol"
                },
                "instr_offset": 1446,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveToRow"
                },
                "instr_offset": 1437,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AINodeCounter"
                },
                "instr_offset": 1470,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AISearchJmpBuf"
                },
                "instr_offset": 1415,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIThinkTimeout"
                },
                "instr_offset": 1464,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos1X"
                },
                "instr_offset": 230,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos1Y"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos1Z"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos2X"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos2Y"
                },
                "instr_offset": 189,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos2Z"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CurrentPlayer"
                },
                "instr_offset": 261,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_DalmatianSpawnStates"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_EnforceCaptureRule"
                },
                "instr_offset": 621,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_MoveResult"
                },
                "instr_offset": 611,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_PlayerIsHuman"
                },
                "instr_offset": 977,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SaveGameWorld0CompletionBits"
                },
                "instr_offset": 1304,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedCol1"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedCol2"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedRow1"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedRow2"
                },
                "instr_offset": 48,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 200,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 363,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 690,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_AnimateMoveSequence"
                },
                "instr_offset": 1041,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_AnimateMoveSequence"
                },
                "instr_offset": 1272,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 1136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMoveSequence"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_HighlightPlayerPieces"
                },
                "instr_offset": 1201,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_InitializeBoard"
                },
                "instr_offset": 247,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1025,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1247,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1567,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 1533,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 1096,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4265968,
            "rva": 71664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Audio_ListenerCameraPos_Flag10Set"
                },
                "instr_offset": 115,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_AIDifficulty"
                },
                "instr_offset": 1432,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_GameBoard"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveFromCol"
                },
                "instr_offset": 1458,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveFromRow"
                },
                "instr_offset": 1452,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveToCol"
                },
                "instr_offset": 1446,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIMoveToRow"
                },
                "instr_offset": 1437,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AINodeCounter"
                },
                "instr_offset": 1470,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AISearchJmpBuf"
                },
                "instr_offset": 1415,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_AIThinkTimeout"
                },
                "instr_offset": 1464,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos1X"
                },
                "instr_offset": 230,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos1Y"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos1Z"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos2X"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos2Y"
                },
                "instr_offset": 189,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CameraPos2Z"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_CurrentPlayer"
                },
                "instr_offset": 261,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_DalmatianSpawnStates"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_EnforceCaptureRule"
                },
                "instr_offset": 621,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_MoveResult"
                },
                "instr_offset": 611,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_PlayerIsHuman"
                },
                "instr_offset": 977,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SaveGameWorld0CompletionBits"
                },
                "instr_offset": 1304,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedCol1"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedCol2"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedRow1"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_UpdateStateMachine_SelectedRow2"
                },
                "instr_offset": 48,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 200,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 363,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 690,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_AnimateMoveSequence"
                },
                "instr_offset": 1041,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_AnimateMoveSequence"
                },
                "instr_offset": 1272,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_BuildMoveList"
                },
                "instr_offset": 1136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMoveSequence"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_HighlightPlayerPieces"
                },
                "instr_offset": 1201,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_InitializeBoard"
                },
                "instr_offset": 247,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1025,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1247,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 1567,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_SearchBestMove"
                },
                "instr_offset": 1533,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 1096,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_CameraPos1X"
            },
            "instr_offset": 230,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_CameraPos1Y"
            },
            "instr_offset": 236,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_CameraPos1Z"
            },
            "instr_offset": 241,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_CameraPos2X"
            },
            "instr_offset": 161,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_CameraPos2Y"
            },
            "instr_offset": 189,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_CameraPos2Z"
            },
            "instr_offset": 195,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_SelectedCol1"
            },
            "instr_offset": 66,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_SelectedRow1"
            },
            "instr_offset": 60,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_SelectedCol2"
            },
            "instr_offset": 54,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_SelectedRow2"
            },
            "instr_offset": 48,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_GameBoard"
            },
            "instr_offset": 225,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_AINodeCounter"
            },
            "instr_offset": 1470,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_MoveResult"
            },
            "instr_offset": 611,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_AIMoveFromCol"
            },
            "instr_offset": 1458,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_AIMoveFromRow"
            },
            "instr_offset": 1452,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_AIMoveToCol"
            },
            "instr_offset": 1446,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_AIMoveToRow"
            },
            "instr_offset": 1437,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_AISearchJmpBuf"
            },
            "instr_offset": 1415,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_AIThinkTimeout"
            },
            "instr_offset": 1464,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Audio_ListenerCameraPos_Flag10Set"
            },
            "instr_offset": 115,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_DalmatianSpawnStates"
            },
            "instr_offset": 9,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_PlayerIsHuman"
            },
            "instr_offset": 977,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_EnforceCaptureRule"
            },
            "instr_offset": 621,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_AIDifficulty"
            },
            "instr_offset": 1432,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_CurrentPlayer"
            },
            "instr_offset": 261,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_UpdateStateMachine_SaveGameWorld0CompletionBits"
            },
            "instr_offset": 1304,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 81 EC 54 05 00 00 A1 ??",
          "match_offset": 0
        },
        "docs": "Processes the frame-driven checkers/mini-game state machine. Updates global board, selection, current-player, move-result, animation, camera, and AI-search state; called from the render frame when checkers mode is active.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 161,
          "symbol_index": 161,
          "accessor": "DTTR_PCDOGS_F_Checkers_UpdateStateMachine",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_UPDATE_STATE_MACHINE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_UPDATE_STATE_MACHINE"
        }
      }
    },
    "Checkers_UpdateStateMachine_AIMoveFromCol": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551368,
            "rva": 357064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1458,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559704,
            "rva": 365400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1458,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559688,
            "rva": 365384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1458,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 1458,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 368,
          "symbol_index": 368,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_AIMoveFromCol",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_AI_MOVE_FROM_COL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_AI_MOVE_FROM_COL"
        }
      }
    },
    "Checkers_UpdateStateMachine_AIMoveFromRow": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551372,
            "rva": 357068,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1452,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559708,
            "rva": 365404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1452,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559692,
            "rva": 365388,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1452,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 1452,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 369,
          "symbol_index": 369,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_AIMoveFromRow",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_AI_MOVE_FROM_ROW",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_AI_MOVE_FROM_ROW"
        }
      }
    },
    "Checkers_UpdateStateMachine_AIMoveToCol": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551376,
            "rva": 357072,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1446,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559712,
            "rva": 365408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1446,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559696,
            "rva": 365392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1446,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 1446,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 370,
          "symbol_index": 370,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_AIMoveToCol",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_AI_MOVE_TO_COL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_AI_MOVE_TO_COL"
        }
      }
    },
    "Checkers_UpdateStateMachine_AIMoveToRow": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551380,
            "rva": 357076,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1437,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559716,
            "rva": 365412,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1437,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559700,
            "rva": 365396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1437,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 1437,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 371,
          "symbol_index": 371,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_AIMoveToRow",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_AI_MOVE_TO_ROW",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_AI_MOVE_TO_ROW"
        }
      }
    },
    "Checkers_UpdateStateMachine_AINodeCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551360,
            "rva": 357056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1470,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559696,
            "rva": 365392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1470,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559680,
            "rva": 365376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1470,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 1470,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 366,
          "symbol_index": 366,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_AINodeCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_AI_NODE_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_AI_NODE_COUNTER"
        }
      }
    },
    "Checkers_UpdateStateMachine_AISearchJmpBuf": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551384,
            "rva": 357080,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1415,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559720,
            "rva": 365416,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1415,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559704,
            "rva": 365400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1415,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 1415,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Checkers_UpdateStateMachine",
          "instr_offset": 1415,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First word of a setjmp/longjmp buffer used to abort/pause checkers AI search from input/render polling; exposed as the first word because the backing value is a raw buffer.",
        "sdk": {
          "id": 372,
          "symbol_index": 372,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_AISearchJmpBuf",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_AI_SEARCH_JMP_BUF",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_AI_SEARCH_JMP_BUF"
        }
      }
    },
    "Checkers_UpdateStateMachine_AIThinkTimeout": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551448,
            "rva": 357144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1464,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559784,
            "rva": 365480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1464,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559768,
            "rva": 365464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1464,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 1464,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 373,
          "symbol_index": 373,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_AIThinkTimeout",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_AI_THINK_TIMEOUT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_AI_THINK_TIMEOUT"
        }
      }
    },
    "Checkers_UpdateStateMachine_CameraPos1X": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551280,
            "rva": 356976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 230,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559616,
            "rva": 365312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 230,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559600,
            "rva": 365296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 230,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 230,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 355,
          "symbol_index": 355,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_CameraPos1X",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS1_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS1_X"
        }
      }
    },
    "Checkers_UpdateStateMachine_CameraPos1Y": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551284,
            "rva": 356980,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559620,
            "rva": 365316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559604,
            "rva": 365300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 236,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 356,
          "symbol_index": 356,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_CameraPos1Y",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS1_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS1_Y"
        }
      }
    },
    "Checkers_UpdateStateMachine_CameraPos1Z": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551288,
            "rva": 356984,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559624,
            "rva": 365320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559608,
            "rva": 365304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 241,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 241,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 357,
          "symbol_index": 357,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_CameraPos1Z",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS1_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS1_Z"
        }
      }
    },
    "Checkers_UpdateStateMachine_CameraPos2X": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551296,
            "rva": 356992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559632,
            "rva": 365328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559616,
            "rva": 365312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 161,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 358,
          "symbol_index": 358,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_CameraPos2X",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS2_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS2_X"
        }
      }
    },
    "Checkers_UpdateStateMachine_CameraPos2Y": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551300,
            "rva": 356996,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 189,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559636,
            "rva": 365332,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 189,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559620,
            "rva": 365316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 189,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 189,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 359,
          "symbol_index": 359,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_CameraPos2Y",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS2_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS2_Y"
        }
      }
    },
    "Checkers_UpdateStateMachine_CameraPos2Z": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551304,
            "rva": 357000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559640,
            "rva": 365336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559624,
            "rva": 365320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 195,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 360,
          "symbol_index": 360,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_CameraPos2Z",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS2_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_CAMERA_POS2_Z"
        }
      }
    },
    "Checkers_UpdateStateMachine_CurrentPlayer": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830144,
            "rva": 23635840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 261,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841408,
            "rva": 23647104,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 261,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840832,
            "rva": 23646528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 261,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 261,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Current checkers side: live play uses player values 1 and 2, toggled with xor 3, and is set to 0 for the no-move/end state.",
        "sdk": {
          "id": 936,
          "symbol_index": 936,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_CurrentPlayer",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_CURRENT_PLAYER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_CURRENT_PLAYER"
        }
      }
    },
    "Checkers_UpdateStateMachine_DalmatianSpawnStates": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830048,
            "rva": 23635744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841312,
            "rva": 23647008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840736,
            "rva": 23646432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 9,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 925,
          "symbol_index": 925,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_DalmatianSpawnStates",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_DALMATIAN_SPAWN_STATES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_DALMATIAN_SPAWN_STATES"
        }
      }
    },
    "Checkers_UpdateStateMachine_EnforceCaptureRule": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830136,
            "rva": 23635832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 621,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841400,
            "rva": 23647096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 621,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840824,
            "rva": 23646520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 621,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 621,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 934,
          "symbol_index": 934,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_EnforceCaptureRule",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_ENFORCE_CAPTURE_RULE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_ENFORCE_CAPTURE_RULE"
        }
      }
    },
    "Checkers_UpdateStateMachine_MoveResult": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551364,
            "rva": 357060,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 611,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559700,
            "rva": 365396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 611,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559684,
            "rva": 365380,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 611,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 611,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 367,
          "symbol_index": 367,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_MoveResult",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_MOVE_RESULT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_MOVE_RESULT"
        }
      }
    },
    "Checkers_UpdateStateMachine_PlayerIsHuman": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830124,
            "rva": 23635820,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 977,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841388,
            "rva": 23647084,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 977,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840812,
            "rva": 23646508,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 977,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 977,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 931,
          "symbol_index": 931,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_PlayerIsHuman",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_PLAYER_IS_HUMAN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_PLAYER_IS_HUMAN"
        }
      }
    },
    "Checkers_UpdateStateMachine_SaveGameWorld0CompletionBits": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830180,
            "rva": 23635876,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1304,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841444,
            "rva": 23647140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1304,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840868,
            "rva": 23646564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1304,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 1304,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 943,
          "symbol_index": 943,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_SaveGameWorld0CompletionBits",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_SAVE_GAME_WORLD0_COMPLETION_BITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_SAVE_GAME_WORLD0_COMPLETION_BITS"
        }
      }
    },
    "Checkers_UpdateStateMachine_SelectedCol1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551312,
            "rva": 357008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559648,
            "rva": 365344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559632,
            "rva": 365328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 66,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 66,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 361,
          "symbol_index": 361,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_SelectedCol1",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_SELECTED_COL1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_SELECTED_COL1"
        }
      }
    },
    "Checkers_UpdateStateMachine_SelectedCol2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551320,
            "rva": 357016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559656,
            "rva": 365352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559640,
            "rva": 365336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 54,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 54,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 363,
          "symbol_index": 363,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_SelectedCol2",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_SELECTED_COL2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_SELECTED_COL2"
        }
      }
    },
    "Checkers_UpdateStateMachine_SelectedRow1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551316,
            "rva": 357012,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559652,
            "rva": 365348,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559636,
            "rva": 365332,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 60,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 362,
          "symbol_index": 362,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_SelectedRow1",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_SELECTED_ROW1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_SELECTED_ROW1"
        }
      }
    },
    "Checkers_UpdateStateMachine_SelectedRow2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551324,
            "rva": 357020,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 48,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559660,
            "rva": 365356,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 48,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559644,
            "rva": 365340,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 48,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_UpdateStateMachine"
            },
            "instr_offset": 48,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 364,
          "symbol_index": 364,
          "accessor": "DTTR_PCDOGS_D_Checkers_UpdateStateMachine_SelectedRow2",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_UPDATE_STATE_MACHINE_SELECTED_ROW2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_UPDATE_STATE_MACHINE_SELECTED_ROW2"
        }
      }
    },
    "Checkers_ValidateMove": {
      "function": {
        "analysis": {
          "en": {
            "address": 4269504,
            "rva": 75200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_ValidateMove_CaptureMovePieceTypeDispatchTable"
                },
                "instr_offset": 271,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_ValidateMove_SimpleMovePieceTypeDispatchTable"
                },
                "instr_offset": 104,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 60,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_StepRecursiveSolver"
                },
                "instr_offset": 182,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4269984,
            "rva": 75680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_ValidateMove_CaptureMovePieceTypeDispatchTable"
                },
                "instr_offset": 271,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_ValidateMove_SimpleMovePieceTypeDispatchTable"
                },
                "instr_offset": 104,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 60,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_StepRecursiveSolver"
                },
                "instr_offset": 182,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4269984,
            "rva": 75680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_ValidateMove_CaptureMovePieceTypeDispatchTable"
                },
                "instr_offset": 271,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Checkers_ValidateMove_SimpleMovePieceTypeDispatchTable"
                },
                "instr_offset": 104,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_CheckCapturePossible"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ExecuteMove"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_FindValidMoves"
                },
                "instr_offset": 60,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_StepRecursiveSolver"
                },
                "instr_offset": 182,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "board",
              "type": "Checkers_Board*",
              "docs": "Packed 32-playable-square checkers board to validate against."
            },
            {
              "name": "from_row",
              "type": "int32_t",
              "docs": "Zero-based source row."
            },
            {
              "name": "from_col",
              "type": "int32_t",
              "docs": "Zero-based source column."
            },
            {
              "name": "to_row",
              "type": "int32_t",
              "docs": "Zero-based destination row."
            },
            {
              "name": "to_col",
              "type": "int32_t",
              "docs": "Zero-based destination column."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Checkers_ValidateMove_SimpleMovePieceTypeDispatchTable"
            },
            "instr_offset": 104,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Checkers_ValidateMove_CaptureMovePieceTypeDispatchTable"
            },
            "instr_offset": 271,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C1 F8 FF FF FF 0F 85 ??",
          "match_offset": -17
        },
        "docs": "Validates a checkers move on the supplied packed 32-square board: returns 2 for a legal simple move, 1 for a legal capture, and 0 for invalid moves or blocked mandatory-capture cases. When the mandatory-capture rule is enabled, simple moves are rejected if any same-side piece can capture.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 169,
          "symbol_index": 169,
          "accessor": "DTTR_PCDOGS_F_Checkers_ValidateMove",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CHECKERS_VALIDATE_MOVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CHECKERS_VALIDATE_MOVE"
        }
      }
    },
    "Checkers_ValidateMove_CaptureMovePieceTypeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4269888,
            "rva": 75584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 271,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4270368,
            "rva": 76064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 271,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4270368,
            "rva": 76064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 271,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_ValidateMove"
            },
            "instr_offset": 271,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Checkers_ValidateMove",
          "instr_offset": 271,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Six-entry uint32_t Checkers_ValidateMove jump table for two-square captures by piece value 1..6; pieces 3/4 share the invalid/default path and 5/6 share king capture logic.",
        "sdk": {
          "id": 30,
          "symbol_index": 30,
          "accessor": "DTTR_PCDOGS_D_Checkers_ValidateMove_CaptureMovePieceTypeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_VALIDATE_MOVE_CAPTURE_MOVE_PIECE_TYPE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_VALIDATE_MOVE_CAPTURE_MOVE_PIECE_TYPE_DISPATCH_TABLE"
        }
      }
    },
    "Checkers_ValidateMove_SimpleMovePieceTypeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4269864,
            "rva": 75560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 104,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4270344,
            "rva": 76040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 104,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4270344,
            "rva": 76040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ValidateMove"
                },
                "instr_offset": 104,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Checkers_ValidateMove"
            },
            "instr_offset": 104,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Checkers_ValidateMove",
          "instr_offset": 104,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Six-entry uint32_t Checkers_ValidateMove jump table for one-square moves by piece value 1..6; pieces 3/4 share the invalid/default path and 5/6 share king movement.",
        "sdk": {
          "id": 29,
          "symbol_index": 29,
          "accessor": "DTTR_PCDOGS_D_Checkers_ValidateMove_SimpleMovePieceTypeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_CHECKERS_VALIDATE_MOVE_SIMPLE_MOVE_PIECE_TYPE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CHECKERS_VALIDATE_MOVE_SIMPLE_MOVE_PIECE_TYPE_DISPATCH_TABLE"
        }
      }
    },
    "Collision_ActorResponseCallback": {
      "type": {
        "ret": "int32_t",
        "params": [
          {
            "type": "Actor_State*",
            "name": "actor",
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "other_actor",
            "doc": null
          },
          {
            "type": "Collision_Polygon*",
            "name": "collision_poly",
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_depth",
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "function_type_alias",
        "docs": "Actor-vs-actor collision response callback slot initialized to Actor_ProcessCollisionResponse.",
        "calling_convention": "cdecl",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Collision_ActorResponseCallback"
        }
      }
    },
    "Collision_BoundingSphere": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I32",
            "name": "center",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "radius",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Collision_BoundingSphere"
        }
      }
    },
    "Collision_BuildWallCollisionPlane": {
      "function": {
        "analysis": {
          "en": {
            "address": 4404688,
            "rva": 210384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 706,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4409744,
            "rva": 215440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 444,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 610,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 749,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4409712,
            "rva": 215408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 444,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 610,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 749,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int16_t*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "collision_node",
              "type": "Collision_Node*",
              "docs": "Owning node whose vertex array supplies the wall edge."
            },
            {
              "name": "polygon",
              "type": "Collision_Polygon*",
              "docs": "Collision polygon containing the wall edge."
            },
            {
              "name": "edge_index",
              "type": "int32_t",
              "docs": "Polygon edge index for the wall segment."
            },
            {
              "name": "plane",
              "type": "Collision_Plane*",
              "docs": "Receives the resulting wall plane record."
            },
            {
              "name": "local_vertices",
              "type": "int16_t*",
              "docs": "Receives the wall-plane vertices."
            },
            {
              "name": "out_vertex_base",
              "type": "int32_t",
              "docs": "Base index into the local vertex output."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C2 22 89 4D 10 0F 84 ??",
          "match_offset": -76
        },
        "docs": "Builds a vertical wall collision plane from one edge of a collision polygon. Used by wall and invisible-wall contact handling.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 432,
          "symbol_index": 432,
          "accessor": "DTTR_PCDOGS_F_Collision_BuildWallCollisionPlane",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_BUILD_WALL_COLLISION_PLANE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_BUILD_WALL_COLLISION_PLANE"
        }
      }
    },
    "Collision_CheckActorGround": {
      "function": {
        "analysis": {
          "en": {
            "address": 4453088,
            "rva": 258784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_CheckActorVisibilityAndFrustum"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 2764,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4458672,
            "rva": 264368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_CheckActorVisibilityAndFrustum"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 2764,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4458688,
            "rva": 264384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_CheckActorVisibilityAndFrustum"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 2764,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "position",
              "type": "Math_Vec3I32*",
              "docs": "World-space fixed-point position tested against active ground/shadow collision planes."
            },
            {
              "name": "cull_radius",
              "type": "int32_t",
              "docs": "Radius/clearance value; the function uses radius >> 2 for plane-distance thresholds."
            },
            {
              "name": "collision_flags",
              "type": "uint32_t",
              "docs": "Flags/mask used to skip matching collision entries; bit 0x8000 selects the positive-depth threshold path."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 18 53 55 8B 2D ??",
          "match_offset": 0
        },
        "docs": "Tests a position/radius against the active collision/shadow plane list and returns nonzero when the point is rejected by the plane set.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 547,
          "symbol_index": 547,
          "accessor": "DTTR_PCDOGS_F_Collision_CheckActorGround",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_CHECK_ACTOR_GROUND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_CHECK_ACTOR_GROUND"
        }
      }
    },
    "Collision_CheckHitEventExists": {
      "function": {
        "analysis": {
          "en": {
            "address": 4391088,
            "rva": 196784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_RegisterHitEvent"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4396096,
            "rva": 201792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_RegisterHitEvent"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4396064,
            "rva": 201760,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_RegisterHitEvent"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "hit_events",
              "type": "Collision_HitEvent*"
            },
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "actor_collision_key",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "5F 5E B0 01 C3 8B 0D ??",
          "match_offset": -42
        },
        "docs": "Returns whether hitEvents already contains an active event for actor/collision key.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 421,
          "symbol_index": 421,
          "accessor": "DTTR_PCDOGS_F_Collision_CheckHitEventExists",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_CHECK_HIT_EVENT_EXISTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_CHECK_HIT_EVENT_EXISTS"
        }
      }
    },
    "Collision_ComponentResponseCallback": {
      "type": {
        "ret": "int32_t",
        "params": [
          {
            "type": "Component_Instance*",
            "name": "component",
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "other_actor",
            "doc": null
          },
          {
            "type": "Collision_Polygon*",
            "name": "collision_poly",
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_depth",
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "function_type_alias",
        "docs": "Component and projectile collision response callback slot initialized to Collision_ProcessProjectileHit.",
        "calling_convention": "cdecl",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Collision_ComponentResponseCallback"
        }
      }
    },
    "Collision_DebugPolygonListBases": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507232,
            "rva": 2312928,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518496,
            "rva": 2324192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517920,
            "rva": 2323616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_IsPolygonInDebugList"
            },
            "instr_offset": 39,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Parallel base-pointer array for Collision_Polygon slices registered by Collision_DetectAndResolve3DCollision. Graphics_IsPolygonInDebugList checks whether a candidate polygon address falls inside one of these slices.",
        "sdk": {
          "id": 818,
          "symbol_index": 818,
          "accessor": "DTTR_PCDOGS_D_Collision_DebugPolygonListBases",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DEBUG_POLYGON_LIST_BASES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DEBUG_POLYGON_LIST_BASES"
        }
      }
    },
    "Collision_DebugPolygonListCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507104,
            "rva": 2312800,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518368,
            "rva": 2324064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517792,
            "rva": 2323488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_IsPolygonInDebugList"
            },
            "instr_offset": 12,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectActorCollisions"
            },
            "instr_offset": 51,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Number of registered collision polygon list slices used by Graphics_IsPolygonInDebugList. Collision_DetectAndResolve3DCollision stores a polygon-list base and count into the parallel arrays, then increments this bounded index.",
        "sdk": {
          "id": 634,
          "symbol_index": 634,
          "accessor": "DTTR_PCDOGS_D_Collision_DebugPolygonListCount",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DEBUG_POLYGON_LIST_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DEBUG_POLYGON_LIST_COUNT"
        }
      }
    },
    "Collision_DebugPolygonListCounts": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507168,
            "rva": 2312864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518432,
            "rva": 2324128,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517856,
            "rva": 2323552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_IsPolygonInDebugList"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Parallel count array for collision polygon list slices registered by Collision_DetectAndResolve3DCollision and queried by Graphics_IsPolygonInDebugList.",
        "sdk": {
          "id": 817,
          "symbol_index": 817,
          "accessor": "DTTR_PCDOGS_D_Collision_DebugPolygonListCounts",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DEBUG_POLYGON_LIST_COUNTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DEBUG_POLYGON_LIST_COUNTS"
        }
      }
    },
    "Collision_DetectActorCollisions": {
      "function": {
        "analysis": {
          "en": {
            "address": 4402608,
            "rva": 208304,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListCount"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectActorCollisions_ObjectList"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 452,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 554,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 2288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3407,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 1614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 1642,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4407616,
            "rva": 213312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListCount"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectActorCollisions_ObjectList"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 452,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 554,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 2288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3407,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 1614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 1642,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4407584,
            "rva": 213280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListCount"
                },
                "instr_offset": 51,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectActorCollisions_ObjectList"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 452,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 554,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 2288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3407,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 1614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 1642,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "collision_list",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Collision_DetectActorCollisions_ObjectList"
            },
            "instr_offset": 65,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_DebugPolygonListCount"
            },
            "instr_offset": 51,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "85 C0 57 74 ?? 8B 2D ??",
          "match_offset": -46
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 430,
          "symbol_index": 430,
          "accessor": "DTTR_PCDOGS_F_Collision_DetectActorCollisions",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_DETECT_ACTOR_COLLISIONS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_DETECT_ACTOR_COLLISIONS"
        }
      }
    },
    "Collision_DetectActorCollisions_ObjectList": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832024,
            "rva": 637720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840928,
            "rva": 646624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840912,
            "rva": 646608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectActorCollisions"
            },
            "instr_offset": 65,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 621,
          "symbol_index": 621,
          "accessor": "DTTR_PCDOGS_D_Collision_DetectActorCollisions_ObjectList",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DETECT_ACTOR_COLLISIONS_OBJECT_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DETECT_ACTOR_COLLISIONS_OBJECT_LIST"
        }
      }
    },
    "Collision_DetectActorObstacles": {
      "function": {
        "analysis": {
          "en": {
            "address": 4405600,
            "rva": 211296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4410656,
            "rva": 216352,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4410624,
            "rva": 216320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4F 4C 52 50 51 E8 ??",
          "match_offset": -47
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 433,
          "symbol_index": 433,
          "accessor": "DTTR_PCDOGS_F_Collision_DetectActorObstacles",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_DETECT_ACTOR_OBSTACLES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_DETECT_ACTOR_OBSTACLES"
        }
      }
    },
    "Collision_DetectAndResolve3DCollision": {
      "function": {
        "analysis": {
          "en": {
            "address": 4394464,
            "rva": 200160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_DefaultUpdateCallbackSlot"
                },
                "instr_offset": 6038,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectAndResolve3DCollision_3dAxisDispatchTable"
                },
                "instr_offset": 3579,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectAndResolve3DCollision_ResponseBuffer"
                },
                "instr_offset": 6854,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 6275,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 452,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 1001,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 1637,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 580,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4399472,
            "rva": 205168,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_DefaultUpdateCallbackSlot"
                },
                "instr_offset": 6038,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectAndResolve3DCollision_3dAxisDispatchTable"
                },
                "instr_offset": 3579,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectAndResolve3DCollision_ResponseBuffer"
                },
                "instr_offset": 6854,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 6275,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 452,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 1637,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 580,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4399440,
            "rva": 205136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_DefaultUpdateCallbackSlot"
                },
                "instr_offset": 6038,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectAndResolve3DCollision_3dAxisDispatchTable"
                },
                "instr_offset": 3579,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectAndResolve3DCollision_ResponseBuffer"
                },
                "instr_offset": 6854,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 6275,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 452,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 1637,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 580,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor/context pointer supplied by the collision pipeline. Confirm the target actor and mutability before writing actor fields from hooks."
            },
            {
              "name": "velocity",
              "type": "int32_t*",
              "docs": "Caller-owned three-int velocity payload; preserving the native pointer is safest unless mutation has been proven safe."
            },
            {
              "name": "surface_normal",
              "type": "int16_t*",
              "docs": "Caller-owned surface-normal payload filled by the collision resolver."
            },
            {
              "name": "contact_point",
              "type": "int16_t*",
              "docs": "Caller-owned contact-point payload; validate readability before dereferencing in hooks."
            },
            {
              "name": "result",
              "type": "int32_t*",
              "docs": "Caller-owned result/contact payload passed independently from this function's return value."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Collision_DetectAndResolve3DCollision_3dAxisDispatchTable"
            },
            "instr_offset": 3579,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_DetectAndResolve3DCollision_ResponseBuffer"
            },
            "instr_offset": 6854,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_DefaultUpdateCallbackSlot"
            },
            "instr_offset": 6038,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 81 EC 2C 02 00 00 E8 ??",
          "match_offset": 0
        },
        "docs": "Detects and resolves 3D collision for an actor/context and caller-supplied local payloads. The velocity, surfaceNormal, contactPoint, and result parameters are raw payload pointers owned by the specific call site.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 429,
          "symbol_index": 429,
          "accessor": "DTTR_PCDOGS_F_Collision_DetectAndResolve3DCollision",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_DETECT_AND_RESOLVE3_D_COLLISION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_DETECT_AND_RESOLVE3_D_COLLISION"
        }
      }
    },
    "Collision_DetectAndResolve3DCollision_3dAxisDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4402580,
            "rva": 208276,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 3579,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4407588,
            "rva": 213284,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 3579,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4407556,
            "rva": 213252,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 3579,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectAndResolve3DCollision"
            },
            "instr_offset": 3579,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Collision_DetectAndResolve3DCollision",
          "instr_offset": 3579,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Four-entry uint32_t jump table used by Collision_DetectAndResolve3DCollision to select one of four collision-normal/contact axes.",
        "sdk": {
          "id": 51,
          "symbol_index": 51,
          "accessor": "DTTR_PCDOGS_D_Collision_DetectAndResolve3DCollision_3dAxisDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DETECT_AND_RESOLVE3_D_COLLISION_3D_AXIS_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DETECT_AND_RESOLVE3_D_COLLISION_3D_AXIS_DISPATCH_TABLE"
        }
      }
    },
    "Collision_DetectAndResolve3DCollision_ResponseBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832464,
            "rva": 638160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 6854,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841368,
            "rva": 647064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 6854,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841352,
            "rva": 647048,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 6854,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectAndResolve3DCollision"
            },
            "instr_offset": 6854,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 630,
          "symbol_index": 630,
          "accessor": "DTTR_PCDOGS_D_Collision_DetectAndResolve3DCollision_ResponseBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DETECT_AND_RESOLVE3_D_COLLISION_RESPONSE_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DETECT_AND_RESOLVE3_D_COLLISION_RESPONSE_BUFFER"
        }
      }
    },
    "Collision_DetectDynamicObject": {
      "function": {
        "analysis": {
          "en": {
            "address": 4352736,
            "rva": 158432,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_IsPointInsidePolygon"
                },
                "instr_offset": 275,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4354672,
            "rva": 160368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_IsPointInsidePolygon"
                },
                "instr_offset": 275,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4354672,
            "rva": 160368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_IsPointInsidePolygon"
                },
                "instr_offset": 275,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor whose position and current ground-contact state are tested against dynamic collision objects."
            },
            {
              "name": "in_out_ground_y",
              "type": "int32_t*",
              "docs": "Current best ground/contact Y value; read for comparison and updated when a dynamic object polygon is selected."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 18 A1 ??",
          "match_offset": 0
        },
        "docs": "Search enabled dynamic collision objects for actor ground contact and update the actor ground object/polygon state.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 298,
          "symbol_index": 298,
          "accessor": "DTTR_PCDOGS_F_Collision_DetectDynamicObject",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_DETECT_DYNAMIC_OBJECT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_DETECT_DYNAMIC_OBJECT"
        }
      }
    },
    "Collision_DetectObjectNodeCollisions": {
      "function": {
        "analysis": {
          "en": {
            "address": 4406624,
            "rva": 212320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestPosX"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestPosY"
                },
                "instr_offset": 244,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestPosZ"
                },
                "instr_offset": 258,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestRadius"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestVelX"
                },
                "instr_offset": 131,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestVelY"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestVelZ"
                },
                "instr_offset": 187,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_TestLineSphereIntersection"
                },
                "instr_offset": 317,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4411680,
            "rva": 217376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestPosX"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestPosY"
                },
                "instr_offset": 244,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestPosZ"
                },
                "instr_offset": 258,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestRadius"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestVelX"
                },
                "instr_offset": 131,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestVelY"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestVelZ"
                },
                "instr_offset": 187,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_TestLineSphereIntersection"
                },
                "instr_offset": 317,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4411648,
            "rva": 217344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestPosX"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestPosY"
                },
                "instr_offset": 244,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestPosZ"
                },
                "instr_offset": 258,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestRadius"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestVelX"
                },
                "instr_offset": 131,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestVelY"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DetectObjectNodeCollisions_TestVelZ"
                },
                "instr_offset": 187,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_TestLineSphereIntersection"
                },
                "instr_offset": 317,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor whose collision callbacks, bounds, and node collision lists are being tested."
            },
            {
              "name": "collision_type",
              "type": "int32_t",
              "docs": "Actor collision type/list index; type 2 may recurse into type 4 for special node checks."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Collision_DetectObjectNodeCollisions_TestPosX"
            },
            "instr_offset": 217,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_DetectObjectNodeCollisions_TestPosY"
            },
            "instr_offset": 244,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_DetectObjectNodeCollisions_TestPosZ"
            },
            "instr_offset": 258,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_DetectObjectNodeCollisions_TestRadius"
            },
            "instr_offset": 143,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_DetectObjectNodeCollisions_TestVelX"
            },
            "instr_offset": 131,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_DetectObjectNodeCollisions_TestVelY"
            },
            "instr_offset": 153,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_DetectObjectNodeCollisions_TestVelZ"
            },
            "instr_offset": 187,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? C1 E2 07 8B 40",
          "match_offset": -55
        },
        "docs": "Walks the node collision list for collisionType and resolves matching collisions against actor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 434,
          "symbol_index": 434,
          "accessor": "DTTR_PCDOGS_F_Collision_DetectObjectNodeCollisions",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_DETECT_OBJECT_NODE_COLLISIONS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_DETECT_OBJECT_NODE_COLLISIONS"
        }
      }
    },
    "Collision_DetectObjectNodeCollisions_TestPosX": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832432,
            "rva": 638128,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841336,
            "rva": 647032,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841320,
            "rva": 647016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectObjectNodeCollisions"
            },
            "instr_offset": 217,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 623,
          "symbol_index": 623,
          "accessor": "DTTR_PCDOGS_D_Collision_DetectObjectNodeCollisions_TestPosX",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_POS_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_POS_X"
        }
      }
    },
    "Collision_DetectObjectNodeCollisions_TestPosY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832436,
            "rva": 638132,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 244,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841340,
            "rva": 647036,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 244,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841324,
            "rva": 647020,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 244,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectObjectNodeCollisions"
            },
            "instr_offset": 244,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 624,
          "symbol_index": 624,
          "accessor": "DTTR_PCDOGS_D_Collision_DetectObjectNodeCollisions_TestPosY",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_POS_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_POS_Y"
        }
      }
    },
    "Collision_DetectObjectNodeCollisions_TestPosZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832440,
            "rva": 638136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 258,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841344,
            "rva": 647040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 258,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841328,
            "rva": 647024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 258,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectObjectNodeCollisions"
            },
            "instr_offset": 258,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 625,
          "symbol_index": 625,
          "accessor": "DTTR_PCDOGS_D_Collision_DetectObjectNodeCollisions_TestPosZ",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_POS_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_POS_Z"
        }
      }
    },
    "Collision_DetectObjectNodeCollisions_TestRadius": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832444,
            "rva": 638140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841348,
            "rva": 647044,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841332,
            "rva": 647028,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectObjectNodeCollisions"
            },
            "instr_offset": 143,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 626,
          "symbol_index": 626,
          "accessor": "DTTR_PCDOGS_D_Collision_DetectObjectNodeCollisions_TestRadius",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_RADIUS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_RADIUS"
        }
      }
    },
    "Collision_DetectObjectNodeCollisions_TestVelX": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832448,
            "rva": 638144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 131,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841352,
            "rva": 647048,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 131,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841336,
            "rva": 647032,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 131,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectObjectNodeCollisions"
            },
            "instr_offset": 131,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 627,
          "symbol_index": 627,
          "accessor": "DTTR_PCDOGS_D_Collision_DetectObjectNodeCollisions_TestVelX",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_VEL_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_VEL_X"
        }
      }
    },
    "Collision_DetectObjectNodeCollisions_TestVelY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832452,
            "rva": 638148,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841356,
            "rva": 647052,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841340,
            "rva": 647036,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 153,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectObjectNodeCollisions"
            },
            "instr_offset": 153,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 628,
          "symbol_index": 628,
          "accessor": "DTTR_PCDOGS_D_Collision_DetectObjectNodeCollisions_TestVelY",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_VEL_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_VEL_Y"
        }
      }
    },
    "Collision_DetectObjectNodeCollisions_TestVelZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832456,
            "rva": 638152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 187,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841360,
            "rva": 647056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 187,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841344,
            "rva": 647040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 187,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_DetectObjectNodeCollisions"
            },
            "instr_offset": 187,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 629,
          "symbol_index": 629,
          "accessor": "DTTR_PCDOGS_D_Collision_DetectObjectNodeCollisions_TestVelZ",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_VEL_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_DETECT_OBJECT_NODE_COLLISIONS_TEST_VEL_Z"
        }
      }
    },
    "Collision_FindGroundPolygonUnderActor": {
      "function": {
        "analysis": {
          "en": {
            "address": 4349488,
            "rva": 155184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_FindIntersectingPolygonEdge"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_FindIntersectingPolygonEdge"
                },
                "instr_offset": 792,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_IsPointInsidePolygon"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CheckGroundFriction"
                },
                "instr_offset": 752,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4351424,
            "rva": 157120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_FindIntersectingPolygonEdge"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_FindIntersectingPolygonEdge"
                },
                "instr_offset": 792,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_IsPointInsidePolygon"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CheckGroundFriction"
                },
                "instr_offset": 752,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4351424,
            "rva": 157120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_FindIntersectingPolygonEdge"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_FindIntersectingPolygonEdge"
                },
                "instr_offset": 792,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_IsPointInsidePolygon"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CheckGroundFriction"
                },
                "instr_offset": 752,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Collision_Node*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "out_polygon",
              "type": "Collision_Polygon**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 2C 53 8B 5C 24 34 55 56 8B B3 E8 ??",
          "match_offset": 0
        },
        "docs": "Finds or walks to the ground polygon under actor and returns actor->ground_collision_node. Only ground contacts go through here, while wall and invisible-wall contacts use Collision_BuildWallCollisionPlane.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 293,
          "symbol_index": 293,
          "accessor": "DTTR_PCDOGS_F_Collision_FindGroundPolygonUnderActor",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_FIND_GROUND_POLYGON_UNDER_ACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_FIND_GROUND_POLYGON_UNDER_ACTOR"
        }
      }
    },
    "Collision_FindIntersectingPolygonEdge": {
      "function": {
        "analysis": {
          "en": {
            "address": 4351392,
            "rva": 157088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 792,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4353328,
            "rva": 159024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 792,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4353328,
            "rva": 159024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 792,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "collision_node",
              "type": "Collision_Node*"
            },
            {
              "name": "polygon",
              "type": "Collision_Polygon*"
            },
            {
              "name": "from_point",
              "type": "int16_t*"
            },
            {
              "name": "to_point",
              "type": "int16_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "F8 0C 83 F8 FC 0F 8E ??",
          "match_offset": -56
        },
        "docs": "Returns the crossed polygon edge index in range 0..3, or -1 for no eligible edge crossing.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 295,
          "symbol_index": 295,
          "accessor": "DTTR_PCDOGS_F_Collision_FindIntersectingPolygonEdge",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_FIND_INTERSECTING_POLYGON_EDGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_FIND_INTERSECTING_POLYGON_EDGE"
        }
      }
    },
    "Collision_GetAdjacentPolygon": {
      "function": {
        "analysis": {
          "en": {
            "address": 4349408,
            "rva": 155104,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 500,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 649,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4351344,
            "rva": 157040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 543,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 692,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4351344,
            "rva": 157040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 543,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 692,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Collision_Polygon*",
          "params": [
            {
              "name": "collision_node",
              "type": "Collision_Node*"
            },
            {
              "name": "polygon",
              "type": "Collision_Polygon*"
            },
            {
              "name": "edge_index_in_out",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "74 ?? 08 8B C8 C1 E9 ??",
          "match_offset": -26
        },
        "docs": "Decodes polygon edge adjacency, clears edgeIndexInOut to -1 for zero adjacency, and returns a neighboring polygon only when its flags include bit 0x4.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 292,
          "symbol_index": 292,
          "accessor": "DTTR_PCDOGS_F_Collision_GetAdjacentPolygon",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_GET_ADJACENT_POLYGON",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_GET_ADJACENT_POLYGON"
        }
      }
    },
    "Collision_GetValidCollisionTarget": {
      "function": {
        "analysis": {
          "en": {
            "address": 4416608,
            "rva": 222304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1655,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4421664,
            "rva": 227360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1658,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4421632,
            "rva": 227328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1658,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "collision_slot",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "3B CA 7E ?? 8B 8E E8 ??",
          "match_offset": -78
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 445,
          "symbol_index": 445,
          "accessor": "DTTR_PCDOGS_F_Collision_GetValidCollisionTarget",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_GET_VALID_COLLISION_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_GET_VALID_COLLISION_TARGET"
        }
      }
    },
    "Collision_HandleComponentCollision": {
      "function": {
        "analysis": {
          "en": {
            "address": 4391200,
            "rva": 196896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CheckCooldownExpired"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CheckActorCollisionTypeAdapter"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4396208,
            "rva": 201904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CheckCooldownExpired"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CheckActorCollisionTypeAdapter"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4396176,
            "rva": 201872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_CheckCooldownExpired"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CheckActorCollisionTypeAdapter"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*"
            },
            {
              "name": "other_actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF FF 5D C3 55 57 E8 ??",
          "match_offset": -45
        },
        "docs": "Handles component-to-actor collision side effects before the projectile/component response callback path. Uses Component_Instance and Actor_State runtime fields.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 422,
          "symbol_index": 422,
          "accessor": "DTTR_PCDOGS_F_Collision_HandleComponentCollision",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_HANDLE_COMPONENT_COLLISION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_HANDLE_COMPONENT_COLLISION"
        }
      }
    },
    "Collision_HitEvent": {
      "type": {
        "members": [
          {
            "type": "Actor_State*",
            "name": "actor",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "start_frame",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "expire_frame",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Collision_HitEvent"
        }
      }
    },
    "Collision_InitializeFunctionPointers": {
      "function": {
        "analysis": {
          "en": {
            "address": 4390272,
            "rva": 195968,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_InitializeFunctionPointers_BehaviorProcessProjectileFunc"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_InitializeFunctionPointers_ComponentResponseFunc"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_InitializeFunctionPointers_ProjectileLogicFunc"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4395280,
            "rva": 200976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_InitializeFunctionPointers_BehaviorProcessProjectileFunc"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_InitializeFunctionPointers_ComponentResponseFunc"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_InitializeFunctionPointers_ProjectileLogicFunc"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4395248,
            "rva": 200944,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_InitializeFunctionPointers_BehaviorProcessProjectileFunc"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_InitializeFunctionPointers_ComponentResponseFunc"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_InitializeFunctionPointers_ProjectileLogicFunc"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Collision_InitializeFunctionPointers_ComponentResponseFunc"
            },
            "instr_offset": 10,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_InitializeFunctionPointers_BehaviorProcessProjectileFunc"
            },
            "instr_offset": 20,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_InitializeFunctionPointers_ProjectileLogicFunc"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C7 05 ?? ?? ?? ?? ?? ?? ?? ?? C7 05 ?? ?? ?? ?? ?? ?? ?? ?? C7 05 ?? ?? ?? ?? ?? ?? ?? ?? C3 90",
          "match_offset": 0
        },
        "docs": "Initializes projectile/collision function pointer globals: projectile_logic_func, collision_response_actor_func, and behavior_process_projectile_func; return register is setup status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 418,
          "symbol_index": 418,
          "accessor": "DTTR_PCDOGS_F_Collision_InitializeFunctionPointers",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_INITIALIZE_FUNCTION_POINTERS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_INITIALIZE_FUNCTION_POINTERS"
        }
      }
    },
    "Collision_InitializeFunctionPointers_BehaviorProcessProjectileFunc": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505640,
            "rva": 2311336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515880,
            "rva": 2321576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515304,
            "rva": 2321000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_InitializeFunctionPointers"
            },
            "instr_offset": 20,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_BehaviorCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Collision_InitializeFunctionPointers",
          "instr_offset": 20,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Projectile behavior lifecycle callback slot initialized to Collision_ProcessProjectileLifecycle; the native return is data-var status.",
        "sdk": {
          "id": 755,
          "symbol_index": 755,
          "accessor": "DTTR_PCDOGS_D_Collision_InitializeFunctionPointers_BehaviorProcessProjectileFunc",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_INITIALIZE_FUNCTION_POINTERS_BEHAVIOR_PROCESS_PROJECTILE_FUNC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_INITIALIZE_FUNCTION_POINTERS_BEHAVIOR_PROCESS_PROJECTILE_FUNC"
        }
      }
    },
    "Collision_InitializeFunctionPointers_ComponentResponseFunc": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832712,
            "rva": 638408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841616,
            "rva": 647312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841600,
            "rva": 647296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_InitializeFunctionPointers"
            },
            "instr_offset": 10,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Collision_ComponentResponseCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Collision_InitializeFunctionPointers",
          "instr_offset": 10,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Component and projectile collision response callback slot initialized to Collision_ProcessProjectileHit.",
        "sdk": {
          "id": 641,
          "symbol_index": 641,
          "accessor": "DTTR_PCDOGS_D_Collision_InitializeFunctionPointers_ComponentResponseFunc",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_INITIALIZE_FUNCTION_POINTERS_COMPONENT_RESPONSE_FUNC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_INITIALIZE_FUNCTION_POINTERS_COMPONENT_RESPONSE_FUNC"
        }
      }
    },
    "Collision_InitializeFunctionPointers_ProjectileLogicFunc": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505688,
            "rva": 2311384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515928,
            "rva": 2321624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515352,
            "rva": 2321048,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_InitializeFunctionPointers"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "engine_managed",
        "docs": "Projectile update callback slot initialized to Component_UpdateProjectileLogic.",
        "sdk": {
          "id": 764,
          "symbol_index": 764,
          "accessor": "DTTR_PCDOGS_D_Collision_InitializeFunctionPointers_ProjectileLogicFunc",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_INITIALIZE_FUNCTION_POINTERS_PROJECTILE_LOGIC_FUNC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_INITIALIZE_FUNCTION_POINTERS_PROJECTILE_LOGIC_FUNC"
        }
      }
    },
    "Collision_IsPointInsidePolygon": {
      "function": {
        "analysis": {
          "en": {
            "address": 4350448,
            "rva": 156144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectDynamicObject"
                },
                "instr_offset": 275,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4352384,
            "rva": 158080,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectDynamicObject"
                },
                "instr_offset": 275,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4352384,
            "rva": 158080,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectDynamicObject"
                },
                "instr_offset": 275,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "collision_node",
              "type": "Collision_Node*"
            },
            {
              "name": "polygon",
              "type": "Collision_Polygon*"
            },
            {
              "name": "point_x",
              "type": "int16_t"
            },
            {
              "name": "point_z",
              "type": "int16_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "88 00 00 00 22 0F 85 ??",
          "match_offset": -90
        },
        "docs": "Odd/even point-in-polygon test in X/Z space. Uses transformed vertex coordinates when collisionNode flags 0x22 are set.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 294,
          "symbol_index": 294,
          "accessor": "DTTR_PCDOGS_F_Collision_IsPointInsidePolygon",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_IS_POINT_INSIDE_POLYGON",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_IS_POINT_INSIDE_POLYGON"
        }
      }
    },
    "Collision_Node": {
      "type": {
        "members": [
          {
            "type": "Collision_Node*",
            "name": "next_in_list",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_04[40]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Math_Matrix3x3I16",
            "name": "transform_matrix",
            "offset": 44,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "transform_padding",
            "offset": 62,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "origin",
            "offset": 64,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_4c[4]",
            "offset": 76,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "step_height",
            "offset": 80,
            "doc": "Maximum climbable step height for this collision node."
          },
          {
            "type": "uint8_t",
            "name": "reserved_54[16]",
            "offset": 84,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "node_type",
            "offset": 100,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "node_cull_flags",
            "offset": 101,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_66[2]",
            "offset": 102,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "vertex_count",
            "offset": 104,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "polygon_count",
            "offset": 106,
            "doc": null
          },
          {
            "type": "Collision_Polygon*",
            "name": "polygons",
            "offset": 108,
            "doc": null
          },
          {
            "type": "Collision_Vertex*",
            "name": "vertices",
            "offset": 112,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_74[20]",
            "offset": 116,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 136,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_radius",
            "offset": 140,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_90[8]",
            "offset": 144,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "bounds_center",
            "offset": 152,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_a4[6]",
            "offset": 164,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "bounds_radius",
            "offset": 170,
            "doc": null
          }
        ],
        "size": 172,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Collision_Node"
        }
      }
    },
    "Collision_Plane": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I32",
            "name": "normal",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "distance",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "edge_index",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "polygon_index",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "surface_type",
            "offset": 24,
            "doc": "This surface classifier is copied from package collision face data."
          }
        ],
        "size": 28,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Collision_Plane"
        }
      }
    },
    "Collision_Polygon": {
      "type": {
        "members": [
          {
            "type": "Collision_Plane*",
            "name": "plane_data",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "vertex_idx[4]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "PKG_CollisionFacePlane*",
            "name": "face_plane",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "material_index",
            "offset": 18,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "adj_edge0",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "pad_16",
            "offset": 22,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Collision_Polygon"
        }
      }
    },
    "Collision_ProcessActorGroundCheck": {
      "function": {
        "analysis": {
          "en": {
            "address": 4403664,
            "rva": 209360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_Dist"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_NormalX"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_NormalY"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_NormalZ"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_Result"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 706,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 1001,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 500,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 649,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4408672,
            "rva": 214368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_Dist"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_NormalX"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_NormalY"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_NormalZ"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_Result"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 444,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 610,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 749,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 543,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 692,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4408640,
            "rva": 214336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_Dist"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_NormalX"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_NormalY"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_NormalZ"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorGroundCheck_Result"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 444,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 610,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 749,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 543,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetAdjacentPolygon"
                },
                "instr_offset": 692,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Collision_ProcessActorGroundCheck_Result"
            },
            "instr_offset": 68,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_ProcessActorGroundCheck_NormalY"
            },
            "instr_offset": 79,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_ProcessActorGroundCheck_NormalX"
            },
            "instr_offset": 52,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_ProcessActorGroundCheck_NormalZ"
            },
            "instr_offset": 57,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_ProcessActorGroundCheck_Dist"
            },
            "instr_offset": 96,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 53 89 44 24 04 A1 ??",
          "match_offset": -12
        },
        "docs": "Ground-check collision pass over actor collision nodes and contextual polygon/contact state. Updates collision_ground_* globals as query output; the paired actor ground-contact state remains contextual runtime collision data.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 431,
          "symbol_index": 431,
          "accessor": "DTTR_PCDOGS_F_Collision_ProcessActorGroundCheck",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_PROCESS_ACTOR_GROUND_CHECK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_PROCESS_ACTOR_GROUND_CHECK"
        }
      }
    },
    "Collision_ProcessActorGroundCheck_Dist": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832696,
            "rva": 638392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 227082240,
            "rva": 222887936,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 227082240,
            "rva": 222887936,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 96,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_ProcessActorGroundCheck"
            },
            "instr_offset": 96,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 638,
          "symbol_index": 638,
          "accessor": "DTTR_PCDOGS_D_Collision_ProcessActorGroundCheck_Dist",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_PROCESS_ACTOR_GROUND_CHECK_DIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_PROCESS_ACTOR_GROUND_CHECK_DIST"
        }
      }
    },
    "Collision_ProcessActorGroundCheck_NormalX": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832616,
            "rva": 638312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2738899085,
            "rva": 2734704781,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2738899085,
            "rva": 2734704781,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_ProcessActorGroundCheck"
            },
            "instr_offset": 52,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 635,
          "symbol_index": 635,
          "accessor": "DTTR_PCDOGS_D_Collision_ProcessActorGroundCheck_NormalX",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_PROCESS_ACTOR_GROUND_CHECK_NORMAL_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_PROCESS_ACTOR_GROUND_CHECK_NORMAL_X"
        }
      }
    },
    "Collision_ProcessActorGroundCheck_NormalY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832608,
            "rva": 638304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 361303290,
            "rva": 357108986,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 361303290,
            "rva": 357108986,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_ProcessActorGroundCheck"
            },
            "instr_offset": 79,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 633,
          "symbol_index": 633,
          "accessor": "DTTR_PCDOGS_D_Collision_ProcessActorGroundCheck_NormalY",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_PROCESS_ACTOR_GROUND_CHECK_NORMAL_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_PROCESS_ACTOR_GROUND_CHECK_NORMAL_Y"
        }
      }
    },
    "Collision_ProcessActorGroundCheck_NormalZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832620,
            "rva": 638316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 227082313,
            "rva": 222888009,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 227082313,
            "rva": 222888009,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_ProcessActorGroundCheck"
            },
            "instr_offset": 57,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 636,
          "symbol_index": 636,
          "accessor": "DTTR_PCDOGS_D_Collision_ProcessActorGroundCheck_NormalZ",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_PROCESS_ACTOR_GROUND_CHECK_NORMAL_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_PROCESS_ACTOR_GROUND_CHECK_NORMAL_Z"
        }
      }
    },
    "Collision_ProcessActorGroundCheck_Result": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832424,
            "rva": 638120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2735536321,
            "rva": 2731342017,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2735536321,
            "rva": 2731342017,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_ProcessActorGroundCheck"
            },
            "instr_offset": 68,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 622,
          "symbol_index": 622,
          "accessor": "DTTR_PCDOGS_D_Collision_ProcessActorGroundCheck_Result",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_PROCESS_ACTOR_GROUND_CHECK_RESULT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_PROCESS_ACTOR_GROUND_CHECK_RESULT"
        }
      }
    },
    "Collision_ProcessActorToActorCollisions": {
      "function": {
        "analysis": {
          "en": {
            "address": 4408304,
            "rva": 214000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorToActorCollisions_StateHandlerTable"
                },
                "instr_offset": 198,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 1637,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 854,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_TestLineSphereIntersection"
                },
                "instr_offset": 769,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 415,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 604,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4413360,
            "rva": 219056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorToActorCollisions_StateHandlerTable"
                },
                "instr_offset": 198,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 1637,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 854,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_TestLineSphereIntersection"
                },
                "instr_offset": 769,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 415,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 604,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4413328,
            "rva": 219024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessActorToActorCollisions_StateHandlerTable"
                },
                "instr_offset": 198,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 1637,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 854,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_TestLineSphereIntersection"
                },
                "instr_offset": 769,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 415,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 604,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Collision_ProcessActorToActorCollisions_StateHandlerTable"
            },
            "instr_offset": 198,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 30 55 8B 2D ??",
          "match_offset": 0
        },
        "docs": "Frame collision pass over live actor/entity runtime lists. It drives actor-to-actor collision checks and dispatches response callbacks through engine-managed globals; entity slots and actor pointers are level-local runtime identities.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 437,
          "symbol_index": 437,
          "accessor": "DTTR_PCDOGS_F_Collision_ProcessActorToActorCollisions",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_PROCESS_ACTOR_TO_ACTOR_COLLISIONS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_PROCESS_ACTOR_TO_ACTOR_COLLISIONS"
        }
      }
    },
    "Collision_ProcessActorToActorCollisions_StateHandlerTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507136,
            "rva": 2312832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 198,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518400,
            "rva": 2324096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 198,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517824,
            "rva": 2323520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 198,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_ProcessActorToActorCollisions"
            },
            "instr_offset": 198,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Collision_ProcessCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Collision_ProcessActorToActorCollisions",
          "instr_offset": 198,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Read-only first entry/base of the collision-state callback table indexed by actor collision subtype; slot 2 aliases collision_process_func.",
        "sdk": {
          "id": 815,
          "symbol_index": 815,
          "accessor": "DTTR_PCDOGS_D_Collision_ProcessActorToActorCollisions_StateHandlerTable",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_PROCESS_ACTOR_TO_ACTOR_COLLISIONS_STATE_HANDLER_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_PROCESS_ACTOR_TO_ACTOR_COLLISIONS_STATE_HANDLER_TABLE"
        }
      }
    },
    "Collision_ProcessCallback": {
      "type": {
        "ret": "int32_t",
        "params": [
          {
            "type": "Actor_State*",
            "name": "actor",
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "other_actor",
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_depth",
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "function_type_alias",
        "docs": "Engine-managed scalar actor collision processing callback slot initialized to Physics_ProcessActorCollision and aliased by collision_state_handler_table slot 2.",
        "calling_convention": "cdecl",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Collision_ProcessCallback"
        }
      }
    },
    "Collision_ProcessPowerupCollisions": {
      "function": {
        "analysis": {
          "en": {
            "address": 4412048,
            "rva": 217744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_CollisionFilterCallback"
                },
                "instr_offset": 3,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_LiveActorListHead"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_TestLineSphereIntersection"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 854,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4417104,
            "rva": 222800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_CollisionFilterCallback"
                },
                "instr_offset": 3,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_LiveActorListHead"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_TestLineSphereIntersection"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 854,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4417072,
            "rva": 222768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_CollisionFilterCallback"
                },
                "instr_offset": 3,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_LiveActorListHead"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_TestLineSphereIntersection"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 854,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Powerup_CollisionFilterCallback"
            },
            "instr_offset": 3,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Powerup_LiveActorListHead"
            },
            "instr_offset": 9,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 1C A1 ?? ??",
          "match_offset": 0
        },
        "docs": "Scans the powerup actor list against actor and dispatches powerup_collision_handler as (powerup_actor, actor, 0, -2). Unconsumed pairs can fall through to swept/sphere distance tests and Collision_ResolveActorToActorCollision(actor, powerup_actor, -1, 0).",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 702,
          "symbol_index": 702,
          "accessor": "DTTR_PCDOGS_F_Collision_ProcessPowerupCollisions",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_PROCESS_POWERUP_COLLISIONS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_PROCESS_POWERUP_COLLISIONS"
        }
      }
    },
    "Collision_ProcessProjectileHit": {
      "function": {
        "analysis": {
          "en": {
            "address": 4390304,
            "rva": 196000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessProjectileHit_NodeTypeDispatchTable"
                },
                "instr_offset": 93,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_RegisterHitEvent"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CheckGroundSlopeDirection"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4395312,
            "rva": 201008,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessProjectileHit_NodeTypeDispatchTable"
                },
                "instr_offset": 93,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_RegisterHitEvent"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CheckGroundSlopeDirection"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4395280,
            "rva": 200976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ProcessProjectileHit_NodeTypeDispatchTable"
                },
                "instr_offset": 93,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_RegisterHitEvent"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CheckGroundSlopeDirection"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*"
            },
            {
              "name": "other_actor",
              "type": "Actor_State*"
            },
            {
              "name": "collision_poly",
              "type": "Collision_Polygon*"
            },
            {
              "name": "collision_depth",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Collision_ProcessProjectileHit_NodeTypeDispatchTable"
            },
            "instr_offset": 93,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "4C 24 28 55 50 51 E8 ??",
          "match_offset": -21
        },
        "docs": "Component and projectile collision-response callback target. It consumes the contextual Collision_Polygon and collision_depth from the collision query, handles sentinel collisionDepth values -2/-1, updates projectile runtime state, records a hit cache in spawn-context storage, and dispatches hit behavior; projectile tail layout is still not decoded.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 419,
          "symbol_index": 419,
          "accessor": "DTTR_PCDOGS_F_Collision_ProcessProjectileHit",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_PROCESS_PROJECTILE_HIT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_PROCESS_PROJECTILE_HIT"
        }
      }
    },
    "Collision_ProcessProjectileHit_NodeTypeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4390948,
            "rva": 196644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 93,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4395956,
            "rva": 201652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 93,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4395924,
            "rva": 201620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 93,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_ProcessProjectileHit"
            },
            "instr_offset": 93,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Collision_ProcessProjectileHit",
          "instr_offset": 93,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Four-entry uint32_t jump table used by Collision_ProcessProjectileHit for hit actor/node type values 1..4.",
        "sdk": {
          "id": 50,
          "symbol_index": 50,
          "accessor": "DTTR_PCDOGS_D_Collision_ProcessProjectileHit_NodeTypeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_PROCESS_PROJECTILE_HIT_NODE_TYPE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_PROCESS_PROJECTILE_HIT_NODE_TYPE_DISPATCH_TABLE"
        }
      }
    },
    "Collision_ProcessProjectileLifecycle": {
      "function": {
        "analysis": {
          "en": {
            "address": 4392784,
            "rva": 198480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateFadeOut"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 512,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 659,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4397792,
            "rva": 203488,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateFadeOut"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 512,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 659,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4397760,
            "rva": 203456,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateFadeOut"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 512,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 659,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 74 ?? 6A 00 57 E8 ??",
          "match_offset": -28
        },
        "docs": "Actor-level projectile lifecycle callback. It drives projectile state transitions, can reinitialize via Component_InitializeProjectile, spawns follow-up projectiles, and emits trails.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 425,
          "symbol_index": 425,
          "accessor": "DTTR_PCDOGS_F_Collision_ProcessProjectileLifecycle",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_PROCESS_PROJECTILE_LIFECYCLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_PROCESS_PROJECTILE_LIFECYCLE"
        }
      }
    },
    "Collision_RegisterHitEvent": {
      "function": {
        "analysis": {
          "en": {
            "address": 4390976,
            "rva": 196672,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_CheckHitEventExists"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4395984,
            "rva": 201680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_CheckHitEventExists"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4395952,
            "rva": 201648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_CheckHitEventExists"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "hit_events",
              "type": "Collision_HitEvent*"
            },
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 48 2C 51 57 56 E8 ??",
          "match_offset": -16
        },
        "docs": "Registers actor in the hit-event ring/list when no active matching event exists.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 420,
          "symbol_index": 420,
          "accessor": "DTTR_PCDOGS_F_Collision_RegisterHitEvent",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_REGISTER_HIT_EVENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_REGISTER_HIT_EVENT"
        }
      }
    },
    "Collision_ResolveObjectNodeCollision": {
      "function": {
        "analysis": {
          "en": {
            "address": 4407408,
            "rva": 213104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ResolveObjectNodeCollision_AxisDispatchTable"
                },
                "instr_offset": 346,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ResolveObjectNodeCollision_PlaneBuffer"
                },
                "instr_offset": 508,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 580,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4412464,
            "rva": 218160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ResolveObjectNodeCollision_AxisDispatchTable"
                },
                "instr_offset": 346,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ResolveObjectNodeCollision_PlaneBuffer"
                },
                "instr_offset": 508,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 580,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4412432,
            "rva": 218128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ResolveObjectNodeCollision_AxisDispatchTable"
                },
                "instr_offset": 346,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_ResolveObjectNodeCollision_PlaneBuffer"
                },
                "instr_offset": 508,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 580,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "object_actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Collision_ResolveObjectNodeCollision_AxisDispatchTable"
            },
            "instr_offset": 346,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_ResolveObjectNodeCollision_PlaneBuffer"
            },
            "instr_offset": 508,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E1 06 8B 45 0C 8B 35 ??",
          "match_offset": -86
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 436,
          "symbol_index": 436,
          "accessor": "DTTR_PCDOGS_F_Collision_ResolveObjectNodeCollision",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_RESOLVE_OBJECT_NODE_COLLISION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_RESOLVE_OBJECT_NODE_COLLISION"
        }
      }
    },
    "Collision_ResolveObjectNodeCollision_AxisDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4408004,
            "rva": 213700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 346,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4413060,
            "rva": 218756,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 346,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4413028,
            "rva": 218724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 346,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_ResolveObjectNodeCollision"
            },
            "instr_offset": 346,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Collision_ResolveObjectNodeCollision",
          "instr_offset": 346,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Four-entry uint32_t jump table used by Collision_ResolveObjectNodeCollision to select one of four node collision axes.",
        "sdk": {
          "id": 52,
          "symbol_index": 52,
          "accessor": "DTTR_PCDOGS_D_Collision_ResolveObjectNodeCollision_AxisDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_RESOLVE_OBJECT_NODE_COLLISION_AXIS_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_RESOLVE_OBJECT_NODE_COLLISION_AXIS_DISPATCH_TABLE"
        }
      }
    },
    "Collision_ResolveObjectNodeCollision_PlaneBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832500,
            "rva": 638196,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 508,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841404,
            "rva": 647100,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 508,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841388,
            "rva": 647084,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ResolveObjectNodeCollision"
                },
                "instr_offset": 508,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_ResolveObjectNodeCollision"
            },
            "instr_offset": 508,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 632,
          "symbol_index": 632,
          "accessor": "DTTR_PCDOGS_D_Collision_ResolveObjectNodeCollision_PlaneBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_COLLISION_RESOLVE_OBJECT_NODE_COLLISION_PLANE_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_COLLISION_RESOLVE_OBJECT_NODE_COLLISION_PLANE_BUFFER"
        }
      }
    },
    "Collision_Response": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "surface_normal",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "padding",
            "offset": 6,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "response_vel",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "penetration_depth",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "landing_state",
            "offset": 22,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Collision response record containing normal, velocity, depth, and landing-state fields.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Collision_Response"
        }
      }
    },
    "Collision_Slot": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I32",
            "name": "normal",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "contact_position[4]",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "response_data[20]",
            "offset": 16,
            "doc": "Reserved response payload; ownership and lifecycle are internal."
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Collision/contact slot containing normal data, contact-position data, and response payload storage.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Collision_Slot"
        }
      }
    },
    "Collision_TestLineSphereIntersection": {
      "function": {
        "analysis": {
          "en": {
            "address": 4406992,
            "rva": 212688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 317,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 769,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4412048,
            "rva": 217744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 317,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 769,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4412016,
            "rva": 217712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 317,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 769,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "line_start",
              "type": "Math_Vec3I32*"
            },
            {
              "name": "line_end",
              "type": "Math_Vec3I32*"
            },
            {
              "name": "sphere_radius",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 14 8B 45 10 8B 0D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 435,
          "symbol_index": 435,
          "accessor": "DTTR_PCDOGS_F_Collision_TestLineSphereIntersection",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COLLISION_TEST_LINE_SPHERE_INTERSECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COLLISION_TEST_LINE_SPHERE_INTERSECTION"
        }
      }
    },
    "Collision_Vertex": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "y",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "z",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "reserved_06",
            "offset": 6,
            "doc": "Reserved collision-vertex tail word following x/y/z coordinates."
          },
          {
            "type": "int16_t",
            "name": "reserved_08",
            "offset": 8,
            "doc": "Reserved collision-vertex tail word. Only the xyz components are named."
          },
          {
            "type": "int16_t",
            "name": "reserved_0a",
            "offset": 10,
            "doc": "The high byte (offset 0xB) is the per-vertex wall tag, and the low byte is unused. Collision_ProcessActorGroundCheck only considers a polygon edge as a wall candidate when at least one endpoint has a nonzero wall tag."
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Collision_Vertex"
        }
      }
    },
    "Component_AttachToOwner": {
      "function": {
        "analysis": {
          "en": {
            "address": 4393952,
            "rva": 199648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 512,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4398960,
            "rva": 204656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 512,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4398928,
            "rva": 204624,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 512,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "owner_actor",
              "type": "Actor_State*"
            },
            {
              "name": "comp",
              "type": "Component_Instance*"
            },
            {
              "name": "local_pos",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "46 04 F6 00 C0 0F 85 ??",
          "match_offset": -13
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 427,
          "symbol_index": 427,
          "accessor": "DTTR_PCDOGS_F_Component_AttachToOwner",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_ATTACH_TO_OWNER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_ATTACH_TO_OWNER"
        }
      }
    },
    "Component_CalculateFrameDuration": {
      "function": {
        "analysis": {
          "en": {
            "address": 4384960,
            "rva": 190656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4389968,
            "rva": 195664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4389936,
            "rva": 195632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 66 8B 42 44 D1 E8 ??",
          "match_offset": -40
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 407,
          "symbol_index": 407,
          "accessor": "DTTR_PCDOGS_F_Component_CalculateFrameDuration",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_CALCULATE_FRAME_DURATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_CALCULATE_FRAME_DURATION"
        }
      }
    },
    "Component_CalculateHomingVelocity": {
      "function": {
        "analysis": {
          "en": {
            "address": 4392096,
            "rva": 197792,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 484,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4397104,
            "rva": 202800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 484,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4397072,
            "rva": 202768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 484,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 40 08 89 41 08 E9 ??",
          "match_offset": -159
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 423,
          "symbol_index": 423,
          "accessor": "DTTR_PCDOGS_F_Component_CalculateHomingVelocity",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_CALCULATE_HOMING_VELOCITY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_CALCULATE_HOMING_VELOCITY"
        }
      }
    },
    "Component_CalculateOrientation": {
      "function": {
        "analysis": {
          "en": {
            "address": 4388736,
            "rva": 194432,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_TrackTarget"
                },
                "instr_offset": 483,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 499,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 552,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4393744,
            "rva": 199440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_TrackTarget"
                },
                "instr_offset": 483,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 499,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 552,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4393712,
            "rva": 199408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_TrackTarget"
                },
                "instr_offset": 483,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 499,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformAtanToCos"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 552,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*"
            },
            {
              "name": "orientation_vec",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 07 F6 C4 80 0F 84 ??",
          "match_offset": -23
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 413,
          "symbol_index": 413,
          "accessor": "DTTR_PCDOGS_F_Component_CalculateOrientation",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_CALCULATE_ORIENTATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_CALCULATE_ORIENTATION"
        }
      }
    },
    "Component_CheckActorCollisionTypeAdapter": {
      "function": {
        "analysis": {
          "en": {
            "address": 4384480,
            "rva": 190176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionType"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4389488,
            "rva": 195184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionType"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4389456,
            "rva": 195152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionType"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*"
            },
            {
              "name": "other_actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "50 04 8B 00 52 50 E8 ??",
          "match_offset": -16
        },
        "docs": "Component-instance to actor collision-type adapter. It reads comp->spawn_context, passes the owning actor and component definition to Actor_CheckCollisionType, and tests them against other_actor. The stable Actor_ prefix is historical.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 404,
          "symbol_index": 404,
          "accessor": "DTTR_PCDOGS_F_Component_CheckActorCollisionTypeAdapter",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_CHECK_ACTOR_COLLISION_TYPE_ADAPTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_CHECK_ACTOR_COLLISION_TYPE_ADAPTER"
        }
      }
    },
    "Component_CollisionVolume": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "extent_words",
            "offset": 0,
            "doc": "Three signed extent-like words used by component collision checks; shape semantics are internal."
          },
          {
            "type": "uint8_t",
            "name": "shape_discriminator",
            "offset": 6,
            "doc": "Shape discriminator byte interpreted by collision-specific handling; nonzero values include more than full OBB shapes."
          },
          {
            "type": "uint8_t",
            "name": "padding_07[1]",
            "offset": 7,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Compact component collision-volume descriptor with half extents and a shape discriminator.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Component_CollisionVolume"
        }
      }
    },
    "Component_CreateActor": {
      "function": {
        "analysis": {
          "en": {
            "address": 4389984,
            "rva": 195680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 600,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4394992,
            "rva": 200688,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 600,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4394960,
            "rva": 200656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 600,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "component_def",
              "type": "Component_Definition*"
            },
            {
              "name": "spawn_source",
              "type": "Actor_State*"
            },
            {
              "name": "owner_actor",
              "type": "Actor_State*"
            },
            {
              "name": "actor_kind",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 56 57 8B 7C 24 1C 83 FF 02 75 ?? A1 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 417,
          "symbol_index": 417,
          "accessor": "DTTR_PCDOGS_F_Component_CreateActor",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_CREATE_ACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_CREATE_ACTOR"
        }
      }
    },
    "Component_Definition": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec2I32XZ",
            "name": "initial_vel_xz",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "gravity",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "homing_strength",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "lifetime_range",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "speed_min",
            "offset": 24,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "speed_variance",
            "offset": 26,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "speed_max",
            "offset": 28,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_damage_type",
            "offset": 32,
            "doc": null
          },
          {
            "type": "Math_Vec2I32XZ",
            "name": "scatter_angle_xz",
            "offset": 36,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "bounce_factor",
            "offset": 44,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "trail_effect_id",
            "offset": 48,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "return_to_owner",
            "offset": 52,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_radius",
            "offset": 56,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_height",
            "offset": 60,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "minigame_params",
            "offset": 64,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "sound_effect_id",
            "offset": 68,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "team_id",
            "offset": 72,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "spawn_limit_counter",
            "offset": 73,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "collision_layer",
            "offset": 74,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "render_priority",
            "offset": 75,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "spawn_offset_x",
            "offset": 76,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "damage_amount",
            "offset": 80,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "damage_cooldown",
            "offset": 82,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "particle_count",
            "offset": 84,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "particle_spread",
            "offset": 88,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "particle_lifetime",
            "offset": 92,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "actor_templates[4]",
            "offset": 96,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "sound_ids[3]",
            "offset": 112,
            "doc": null
          }
        ],
        "size": 124,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Component_Definition"
        }
      }
    },
    "Component_GetSpeedRange": {
      "function": {
        "analysis": {
          "en": {
            "address": 4387664,
            "rva": 193360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4392672,
            "rva": 198368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4392640,
            "rva": 198336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 33 D2 8B 88 F4 00 00 00 8B 49 04 8B 41 1C 66 8B 51 18 C1 E0 10 0B C2 C3 90 90 90 90 8B 44 24 04 8B 88 F4 00 00 00 8B 51 04 8B 02 C1 E8 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 410,
          "symbol_index": 410,
          "accessor": "DTTR_PCDOGS_F_Component_GetSpeedRange",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_GET_SPEED_RANGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_GET_SPEED_RANGE"
        }
      }
    },
    "Component_HitEvent": {
      "type": {
        "members": [
          {
            "type": "Actor_State*",
            "name": "actor",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "start_frame",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "expire_frame",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Component_HitEvent"
        }
      }
    },
    "Component_InitializeProjectile": {
      "function": {
        "analysis": {
          "en": {
            "address": 4389712,
            "rva": 195408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 465,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4394720,
            "rva": 200416,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 465,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4394688,
            "rva": 200384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 465,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*"
            },
            {
              "name": "spawn_vec",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "03 66 8B 57 44 52 E8 ??",
          "match_offset": -79
        },
        "docs": "Initializes Component_Instance projectile runtime fields including projectile_state, projectile_timer, and homing velocity slots before calling Component_CalculateOrientation. Projectile tail layout is still not decoded.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 416,
          "symbol_index": 416,
          "accessor": "DTTR_PCDOGS_F_Component_InitializeProjectile",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_INITIALIZE_PROJECTILE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_INITIALIZE_PROJECTILE"
        }
      }
    },
    "Component_Instance": {
      "type": {
        "members": [
          {
            "type": "Component_Instance*",
            "name": "parent_comp",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "timer_packed",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Component_Instance*",
            "name": "next_in_chain",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Component_Instance*",
            "name": "prev_in_chain",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "scene_node_ptr",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Component_Definition*",
            "name": "definition_ptr",
            "offset": 20,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "target_actor",
            "offset": 24,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "state_word",
            "offset": 28,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "flags",
            "offset": 32,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "flags_hi",
            "offset": 34,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_flags",
            "offset": 36,
            "doc": "These runtime collision flags describe the object itself, separate from level polygon flags."
          },
          {
            "type": "int32_t",
            "name": "behavior_state",
            "offset": 40,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "local_rot",
            "offset": 44,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "local_rot_02",
            "offset": 48,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "local_rot_hi",
            "offset": 50,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "local_rot_11",
            "offset": 52,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "local_rot_20",
            "offset": 56,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "local_rot_22",
            "offset": 60,
            "doc": null
          },
          {
            "type": "Math_Vec2I32",
            "name": "local_pos_xy",
            "offset": 64,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "spawn_count_byte_0",
            "offset": 72,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "active_count",
            "offset": 73,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "spawn_count_byte_2",
            "offset": 74,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "active_max",
            "offset": 75,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "spawn_interval",
            "offset": 76,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "spawn_delay",
            "offset": 80,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "lifetime",
            "offset": 82,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "spawn_offset",
            "offset": 84,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "lod_node_ptrs[3]",
            "offset": 96,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "shadow_node_ptr",
            "offset": 108,
            "doc": null
          },
          {
            "type": "void*",
            "name": "sound_slot_table",
            "offset": 112,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "local_scale",
            "offset": 116,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "bone_offset",
            "offset": 128,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "transform_flags",
            "offset": 140,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "render_distance_sq",
            "offset": 144,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "visibility_mask",
            "offset": 148,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "world_pos",
            "offset": 152,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "prev_world_pos",
            "offset": 164,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "velocity",
            "offset": 176,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "acceleration",
            "offset": 188,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "ground_height",
            "offset": 192,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "projectile_state",
            "offset": 196,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "world_pos_ref",
            "offset": 200,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "projectile_timer",
            "offset": 204,
            "doc": null
          },
          {
            "type": "Actor_State**",
            "name": "owner_actor_ref",
            "offset": 208,
            "doc": "Pointer to an Actor_State* slot; projectile logic dereferences it and checks the owner's lifecycle_flags."
          },
          {
            "type": "Math_Vec3I32",
            "name": "homing_vel",
            "offset": 212,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "yaw_angle",
            "offset": 224,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "yaw_angle_prev",
            "offset": 226,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "pitch_angle",
            "offset": 228,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "pitch_angle_prev",
            "offset": 230,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "angular_vel_yaw",
            "offset": 232,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "angular_vel_pitch",
            "offset": 236,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "spin_rate",
            "offset": 240,
            "doc": null
          },
          {
            "type": "Component_SpawnParams*",
            "name": "spawn_context",
            "offset": 244,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "height_ref_comp",
            "offset": 248,
            "doc": null
          },
          {
            "type": "Component_TrailObject*",
            "name": "trail_effect_ptr",
            "offset": 252,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_group",
            "offset": 256,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "damage_cooldown_timer",
            "offset": 260,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "script_vars[71]",
            "offset": 264,
            "doc": null
          }
        ],
        "size": 548,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Component_Instance"
        }
      }
    },
    "Component_IsAirborneTarget": {
      "function": {
        "analysis": {
          "en": {
            "address": 4387696,
            "rva": 193392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_HandleDamageResponse"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4392704,
            "rva": 198400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_HandleDamageResponse"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4392672,
            "rva": 198368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_HandleDamageResponse"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 51 04 8B 02 C1 E8 ??",
          "match_offset": -10
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 411,
          "symbol_index": 411,
          "accessor": "DTTR_PCDOGS_F_Component_IsAirborneTarget",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_IS_AIRBORNE_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_IS_AIRBORNE_TARGET"
        }
      }
    },
    "Component_MeshHeader": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "mesh_flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "mesh_instance_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Animation_DataBlock*",
            "name": "animation_data_ptr",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "lod_flags",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "lod_distance_threshold",
            "offset": 14,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "mesh_block_data[108]",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Animation_ControllerSlot*",
            "name": "animation_controller_ptr",
            "offset": 124,
            "doc": null
          }
        ],
        "size": 128,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Component_MeshHeader"
        }
      }
    },
    "Component_PlayPositionalSound": {
      "function": {
        "analysis": {
          "en": {
            "address": 4389664,
            "rva": 195360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 880,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4394672,
            "rva": 200368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 880,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4394640,
            "rva": 200336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 880,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "component_def",
              "type": "Component_Definition*"
            },
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "sound_slot",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 83 C1 40 51 50 E8 ??",
          "match_offset": -23
        },
        "docs": "Plays a positional sound from a component definition at the actor's current position.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 415,
          "symbol_index": 415,
          "accessor": "DTTR_PCDOGS_F_Component_PlayPositionalSound",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_PLAY_POSITIONAL_SOUND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_PLAY_POSITIONAL_SOUND"
        }
      }
    },
    "Component_SetVelocityFromDirection": {
      "function": {
        "analysis": {
          "en": {
            "address": 4392608,
            "rva": 198304,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4397616,
            "rva": 203312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4397584,
            "rva": 203280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int16_t",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*"
            },
            {
              "name": "speed_scale",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "7E ?? 51 6A 00 57 E8 ??",
          "match_offset": -28
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 424,
          "symbol_index": 424,
          "accessor": "DTTR_PCDOGS_F_Component_SetVelocityFromDirection",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_SET_VELOCITY_FROM_DIRECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_SET_VELOCITY_FROM_DIRECTION"
        }
      }
    },
    "Component_SpawnFollowupProjectile": {
      "function": {
        "analysis": {
          "en": {
            "address": 4393712,
            "rva": 199408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "MiniGame_InitializeRoundParams"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 659,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4398720,
            "rva": 204416,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "MiniGame_InitializeRoundParams"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 659,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4398688,
            "rva": 204384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "MiniGame_InitializeRoundParams"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 659,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "component_def",
              "type": "Component_Definition*"
            },
            {
              "name": "source_actor",
              "type": "Actor_State*"
            },
            {
              "name": "parent_actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 50 8D 47 40 50 E8 ??",
          "match_offset": -36
        },
        "docs": "Spawns a follow-up projectile actor from a component definition and source actor, optionally attaching it to parent_actor with Actor_AttachToParent. Copies source direction into child yaw/pitch and transform state.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 426,
          "symbol_index": 426,
          "accessor": "DTTR_PCDOGS_F_Component_SpawnFollowupProjectile",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_SPAWN_FOLLOWUP_PROJECTILE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_SPAWN_FOLLOWUP_PROJECTILE"
        }
      }
    },
    "Component_SpawnFromDefinition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4387808,
            "rva": 193504,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 677,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 552,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 600,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 465,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 880,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "MiniGame_InitializeRoundParams"
                },
                "instr_offset": 900,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1517,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4392816,
            "rva": 198512,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 677,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 552,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 600,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 465,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 880,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "MiniGame_InitializeRoundParams"
                },
                "instr_offset": 900,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1520,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4392784,
            "rva": 198480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 677,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 552,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CreateActor"
                },
                "instr_offset": 600,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 465,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_PlayPositionalSound"
                },
                "instr_offset": 880,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "MiniGame_InitializeRoundParams"
                },
                "instr_offset": 900,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1520,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Component_Instance*",
          "params": [
            {
              "name": "source_actor",
              "type": "Actor_State*"
            },
            {
              "name": "owner_actor",
              "type": "Actor_State*"
            },
            {
              "name": "spawn_desc",
              "type": "Component_Definition**",
              "docs": "Pointer to the definition-pointer slot of the caller's spawn-params block (Component_SpawnParams.definition at +0x4)."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0C 89 44 24 14 0F 84 ??",
          "match_offset": -45
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 412,
          "symbol_index": 412,
          "accessor": "DTTR_PCDOGS_F_Component_SpawnFromDefinition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_SPAWN_FROM_DEFINITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_SPAWN_FROM_DEFINITION"
        }
      }
    },
    "Component_SpawnParams": {
      "type": {
        "members": [
          {
            "type": "Actor_State*",
            "name": "owner",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Component_Definition*",
            "name": "definition",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "initial_pos",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "target_actor",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "spawn_flags",
            "offset": 24,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "attached_actor",
            "offset": 28,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "reserved_20",
            "offset": 32,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "reserved_24",
            "offset": 36,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "state_flags",
            "offset": 40,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "pad_29[3]",
            "offset": 41,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "spawn_frame",
            "offset": 44,
            "doc": null
          },
          {
            "type": "Component_HitEvent",
            "name": "hit_events[8]",
            "offset": 48,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "hit_actors[6]",
            "offset": 144,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "hit_depths[6]",
            "offset": 168,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "impact_velocities[6]",
            "offset": 180,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "hit_count",
            "offset": 252,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "pad_0FD",
            "offset": 253,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "impact_normal",
            "offset": 254,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "pad_104[4]",
            "offset": 260,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "impact_delta",
            "offset": 264,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "homing_response_scale",
            "offset": 276,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "pad_116",
            "offset": 278,
            "doc": null
          }
        ],
        "size": 280,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Component_SpawnParams"
        }
      }
    },
    "Component_TrackTarget": {
      "function": {
        "analysis": {
          "en": {
            "address": 4389360,
            "rva": 195056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 231,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 483,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4394368,
            "rva": 200064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 231,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 483,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4394336,
            "rva": 200032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 231,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 483,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*"
            },
            {
              "name": "target_pos",
              "type": "int32_t*"
            },
            {
              "name": "turn_rate",
              "type": "int16_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "2B CA 51 89 4D F8 E8 ??",
          "match_offset": -101
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 414,
          "symbol_index": 414,
          "accessor": "DTTR_PCDOGS_F_Component_TrackTarget",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_TRACK_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_TRACK_TARGET"
        }
      }
    },
    "Component_TrailObject": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "bone_offset",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "bone_index",
            "offset": 6,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "max_segments",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "processed_flag",
            "offset": 9,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "active_count",
            "offset": 10,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 11,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "color_data",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "color_g",
            "offset": 13,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "color_b",
            "offset": 14,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "color_a",
            "offset": 15,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "width_start",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "width_end",
            "offset": 18,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "fade_rate",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "lifetime",
            "offset": 22,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "head_index",
            "offset": 24,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "segment_index",
            "offset": 26,
            "doc": null
          },
          {
            "type": "Trail_Segment*",
            "name": "segment_array",
            "offset": 28,
            "doc": null
          }
        ],
        "size": 32,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Component_TrailObject"
        }
      }
    },
    "Component_UpdateCollisionDetection": {
      "function": {
        "analysis": {
          "en": {
            "address": 4385168,
            "rva": 190864,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionType"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1641,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckCollisionBit"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4390176,
            "rva": 195872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionType"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1641,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckCollisionBit"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4390144,
            "rva": 195840,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckCollisionType"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1641,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_HandleComponentCollision"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckCollisionBit"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "collision_slots",
              "type": "int32_t*",
              "docs": "Array of component collision slots; negative slotCount processes the current slot only."
            },
            {
              "name": "slot_count",
              "type": "int32_t",
              "docs": "Number of collision slots to scan; negative forces a single-slot probe path."
            },
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor whose component collision slots are evaluated."
            },
            {
              "name": "other_actor",
              "type": "Actor_State*",
              "docs": "Optional target actor; when present, its world position is used as the probe position."
            },
            {
              "name": "probe_position",
              "type": "int32_t*",
              "docs": "Optional xyz world-position vector used when otherActor is null."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 45 18 85 C0 0F 84 ??",
          "match_offset": -24
        },
        "docs": "Tests component collision slots against another actor or probe position and records hit position, distance, and target actor state in matching slots.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 409,
          "symbol_index": 409,
          "accessor": "DTTR_PCDOGS_F_Component_UpdateCollisionDetection",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_UPDATE_COLLISION_DETECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_UPDATE_COLLISION_DETECTION"
        }
      }
    },
    "Component_UpdateProjectileLogic": {
      "function": {
        "analysis": {
          "en": {
            "address": 4391456,
            "rva": 197152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateHomingVelocity"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SetVelocityFromDirection"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_TrackTarget"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 550,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 462,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4396464,
            "rva": 202160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateHomingVelocity"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SetVelocityFromDirection"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_TrackTarget"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 550,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 462,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4396432,
            "rva": 202128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateHomingVelocity"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SetVelocityFromDirection"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_TrackTarget"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 550,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 462,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "comp",
              "type": "Component_Instance*",
              "docs": "Runtime component instance whose spawn_context, definition, owner_actor_ref, projectile timers, homing fields, and component state drive projectile behavior."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "10 85 C0 74 ?? 57 E8 ??",
          "match_offset": -52
        },
        "docs": "Updates projectile behavior for the runtime component instance, including spawn context, definition, owner actor references, projectile timer, homing velocity fields, and component state flags.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 701,
          "symbol_index": 701,
          "accessor": "DTTR_PCDOGS_F_Component_UpdateProjectileLogic",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_UPDATE_PROJECTILE_LOGIC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_UPDATE_PROJECTILE_LOGIC"
        }
      }
    },
    "Component_UpdateTimers": {
      "function": {
        "analysis": {
          "en": {
            "address": 4385024,
            "rva": 190720,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateFrameDuration"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 887,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4390032,
            "rva": 195728,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateFrameDuration"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 887,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4390000,
            "rva": 195696,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_CalculateFrameDuration"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_AttachToOwner"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 887,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "timer_slots",
              "type": "int32_t*",
              "docs": "Array of component timer/collision slots; each slot starts with a Component_Definition pointer."
            },
            {
              "name": "slot_count",
              "type": "int32_t",
              "docs": "Number of timer slots to update."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "7E ?? 00 75 ?? 50 E8 ??",
          "match_offset": -50
        },
        "docs": "Updates component slot cooldowns and next timer deadlines, using Component_CalculateFrameDuration for active definitions.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 408,
          "symbol_index": 408,
          "accessor": "DTTR_PCDOGS_F_Component_UpdateTimers",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_COMPONENT_UPDATE_TIMERS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_COMPONENT_UPDATE_TIMERS"
        }
      }
    },
    "Config_ApplySettings": {
      "function": {
        "analysis": {
          "en": {
            "address": 4444432,
            "rva": 250128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Config_ApplySettings_InputPlayer1Controls"
                },
                "instr_offset": 119,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Config_ApplySettings_InputPlayer2Controls"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Config_ApplySettings_InputSpecialButton"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 155,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4449680,
            "rva": 255376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Config_ApplySettings_InputPlayer1Controls"
                },
                "instr_offset": 119,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Config_ApplySettings_InputPlayer2Controls"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Config_ApplySettings_InputSpecialButton"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4449648,
            "rva": 255344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Config_ApplySettings_InputPlayer1Controls"
                },
                "instr_offset": 119,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Config_ApplySettings_InputPlayer2Controls"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Config_ApplySettings_InputSpecialButton"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Config_ApplySettings_InputPlayer1Controls"
            },
            "instr_offset": 119,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Config_ApplySettings_InputSpecialButton"
            },
            "instr_offset": 143,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Config_ApplySettings_InputPlayer2Controls"
            },
            "instr_offset": 87,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 56 57 8B",
          "match_offset": 0
        },
        "docs": "Clear cached input bindings and rebuild keyboard/gamepad button masks from the loaded pcdogs.ini settings.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 514,
          "symbol_index": 514,
          "accessor": "DTTR_PCDOGS_F_Config_ApplySettings",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CONFIG_APPLY_SETTINGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CONFIG_APPLY_SETTINGS"
        }
      }
    },
    "Config_ApplySettings_InputPlayer1Controls": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506980,
            "rva": 2312676,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 119,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2083061379,
            "rva": 2078867075,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 119,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2083061379,
            "rva": 2078867075,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 119,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Config_ApplySettings"
            },
            "instr_offset": 119,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Config_ApplySettings",
          "instr_offset": 119,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First dword/base of the player-1 pcdogs.ini binding block; Config_ApplySettings applies the first 10 normal mappings.",
        "sdk": {
          "id": 803,
          "symbol_index": 803,
          "accessor": "DTTR_PCDOGS_D_Config_ApplySettings_InputPlayer1Controls",
          "sdk_id": "DTTR_PCDOGS_DATA_CONFIG_APPLY_SETTINGS_INPUT_PLAYER1_CONTROLS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CONFIG_APPLY_SETTINGS_INPUT_PLAYER1_CONTROLS"
        }
      }
    },
    "Config_ApplySettings_InputPlayer2Controls": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507032,
            "rva": 2312728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 3296985087,
            "rva": 3292790783,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 3296985087,
            "rva": 3292790783,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Config_ApplySettings"
            },
            "instr_offset": 87,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Config_ApplySettings",
          "instr_offset": 87,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First dword/base of the player-2/gamepad pcdogs.ini binding block; Config_ApplySettings applies the first 10 normal mappings.",
        "sdk": {
          "id": 807,
          "symbol_index": 807,
          "accessor": "DTTR_PCDOGS_D_Config_ApplySettings_InputPlayer2Controls",
          "sdk_id": "DTTR_PCDOGS_DATA_CONFIG_APPLY_SETTINGS_INPUT_PLAYER2_CONTROLS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CONFIG_APPLY_SETTINGS_INPUT_PLAYER2_CONTROLS"
        }
      }
    },
    "Config_ApplySettings_InputSpecialButton": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507020,
            "rva": 2312716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 3330539519,
            "rva": 3326345215,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 3330539519,
            "rva": 3326345215,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Config_ApplySettings"
            },
            "instr_offset": 143,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Config_ApplySettings",
          "instr_offset": 143,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Additional pcdogs.ini button binding assigned to Input_State mask 0x4000; defaults to VK_SPACE (0x20) when unset.",
        "sdk": {
          "id": 806,
          "symbol_index": 806,
          "accessor": "DTTR_PCDOGS_D_Config_ApplySettings_InputSpecialButton",
          "sdk_id": "DTTR_PCDOGS_DATA_CONFIG_APPLY_SETTINGS_INPUT_SPECIAL_BUTTON",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CONFIG_APPLY_SETTINGS_INPUT_SPECIAL_BUTTON"
        }
      }
    },
    "Config_Data": {
      "type": {
        "members": [
          {
            "type": "char",
            "name": "gamma_setting",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "pad[3]",
            "offset": 1,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "keyboard_bindings[13]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "joystick_bindings[13]",
            "offset": 56,
            "doc": null
          }
        ],
        "size": 108,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Config_Data"
        }
      }
    },
    "Config_GameSettings": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "sound_enabled",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "difficulty",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "language",
            "offset": 2,
            "doc": "Persisted language ID; 0 is English. EU/SC builds write it through Settings_SetLanguage and check it against the boot-selected language group in Save_CheckContinueSlotLanguage; EN builds leave it 0."
          },
          {
            "type": "uint8_t",
            "name": "initialized",
            "offset": 3,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Config_GameSettings"
        }
      }
    },
    "Config_LoadAlternateFromINI": {
      "function": {
        "analysis": {
          "en": {
            "address": 4446064,
            "rva": 251760,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 553,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4451328,
            "rva": 257024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 562,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4451296,
            "rva": 256992,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 562,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E9 ?? ?? ?? ?? 90 A1",
          "match_offset": 0
        },
        "docs": "Alternate config-loading entry point that initializes controller and button mappings before tail-calling Config_LoadFromINI.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 13,
          "symbol_index": 13,
          "accessor": "DTTR_PCDOGS_F_Config_LoadAlternateFromINI",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CONFIG_LOAD_ALTERNATE_FROM_INI",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CONFIG_LOAD_ALTERNATE_FROM_INI"
        }
      }
    },
    "Config_LoadFromINI": {
      "function": {
        "analysis": {
          "en": {
            "address": 4444608,
            "rva": 250304,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Config_LoadFromINI_FileConfigChecksum"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Config_LoadFromINI_FilePcdogsINI"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4449872,
            "rva": 255568,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Config_LoadFromINI_FileConfigChecksum"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Config_LoadFromINI_FilePcdogsINI"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4449840,
            "rva": 255536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Config_LoadFromINI_FileConfigChecksum"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Config_LoadFromINI_FilePcdogsINI"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Config_LoadFromINI_FileConfigChecksum"
            },
            "instr_offset": 67,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Config_LoadFromINI_FilePcdogsINI"
            },
            "instr_offset": 9,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 08 57 68 ??",
          "match_offset": 0
        },
        "docs": "Loads pcdogs.ini when present and checksum-valid, clamps the display setting, restores default special-button binding when missing, reads player control bindings, then applies the resulting input mapping.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 515,
          "symbol_index": 515,
          "accessor": "DTTR_PCDOGS_F_Config_LoadFromINI",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CONFIG_LOAD_FROM_INI",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CONFIG_LOAD_FROM_INI"
        }
      }
    },
    "Config_LoadFromINI_FileConfigChecksum": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526872,
            "rva": 332568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4535068,
            "rva": 340764,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4535068,
            "rva": 340764,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Config_LoadFromINI"
            },
            "instr_offset": 67,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Config_LoadFromINI",
          "instr_offset": 67,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Scalar checksum/header accumulator used by Config_LoadFromINI to validate the PCDOGS pcdogs.ini header.",
        "sdk": {
          "id": 272,
          "symbol_index": 272,
          "accessor": "DTTR_PCDOGS_D_Config_LoadFromINI_FileConfigChecksum",
          "sdk_id": "DTTR_PCDOGS_DATA_CONFIG_LOAD_FROM_INI_FILE_CONFIG_CHECKSUM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CONFIG_LOAD_FROM_INI_FILE_CONFIG_CHECKSUM"
        }
      }
    },
    "Config_LoadFromINI_FilePcdogsINI": {
      "data": {
        "analysis": {
          "en": {
            "address": 4527976,
            "rva": 333672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536172,
            "rva": 341868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536172,
            "rva": 341868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Config_LoadFromINI"
            },
            "instr_offset": 9,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 274,
          "symbol_index": 274,
          "accessor": "DTTR_PCDOGS_D_Config_LoadFromINI_FilePcdogsINI",
          "sdk_id": "DTTR_PCDOGS_DATA_CONFIG_LOAD_FROM_INI_FILE_PCDOGS_INI",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CONFIG_LOAD_FROM_INI_FILE_PCDOGS_INI"
        }
      }
    },
    "Config_SaveSettingsToINI": {
      "function": {
        "analysis": {
          "en": {
            "address": 4444848,
            "rva": 250544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Config_SaveSettingsToINI_FileHeaderPcdogs"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 970,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4450112,
            "rva": 255808,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Config_SaveSettingsToINI_FileHeaderPcdogs"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 997,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4450080,
            "rva": 255776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Config_SaveSettingsToINI_FileHeaderPcdogs"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 997,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "config_data",
              "type": "void const*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Config_SaveSettingsToINI_FileHeaderPcdogs"
            },
            "instr_offset": 64,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A5 A2 ?? ?? ?? ?? E8 ??",
          "match_offset": -24
        },
        "docs": "Copies the supplied settings block into the global config while preserving the current display setting, reapplies input mappings, then writes pcdogs.ini with the PCDOGS header and control bindings.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 516,
          "symbol_index": 516,
          "accessor": "DTTR_PCDOGS_F_Config_SaveSettingsToINI",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_CONFIG_SAVE_SETTINGS_TO_INI",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_CONFIG_SAVE_SETTINGS_TO_INI"
        }
      }
    },
    "Config_SaveSettingsToINI_FileHeaderPcdogs": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526864,
            "rva": 332560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4535060,
            "rva": 340756,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4535060,
            "rva": 340756,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Config_SaveSettingsToINI"
            },
            "instr_offset": 64,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "char[7]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Config_SaveSettingsToINI",
          "instr_offset": 64,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Literal PCDOGS header written for pcdogs.ini.",
        "sdk": {
          "id": 271,
          "symbol_index": 271,
          "accessor": "DTTR_PCDOGS_D_Config_SaveSettingsToINI_FileHeaderPcdogs",
          "sdk_id": "DTTR_PCDOGS_DATA_CONFIG_SAVE_SETTINGS_TO_INI_FILE_HEADER_PCDOGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_CONFIG_SAVE_SETTINGS_TO_INI_FILE_HEADER_PCDOGS"
        }
      }
    },
    "D3D_AcceptAnyDriver": {
      "function": {
        "analysis": {
          "en": {
            "address": 4298128,
            "rva": 103824,
            "image_base": 4194304
          },
          "eu": {
            "address": 4298608,
            "rva": 104304,
            "image_base": 4194304
          },
          "sc": {
            "address": 4298608,
            "rva": 104304,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "driver_info",
              "type": "D3D_DriverInfo*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "B8 01 00 00 00 C3 90 90 90 90 90 90 90 90 90 90 51 68 ??",
          "match_offset": 0
        },
        "docs": "D3D_DriverAcceptCallback implementation that ignores driverInfo and always returns accepted/nonzero.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 235,
          "symbol_index": 235,
          "accessor": "DTTR_PCDOGS_F_D3D_AcceptAnyDriver",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_ACCEPT_ANY_DRIVER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_ACCEPT_ANY_DRIVER"
        }
      }
    },
    "D3D_CheckDeviceLost": {
      "function": {
        "analysis": {
          "en": {
            "address": 4293776,
            "rva": 99472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4294240,
            "rva": 99936,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4294240,
            "rva": 99936,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "32 C0 C3 90 90 90 90 90 90 90 90 90 90 90 90 90 81 EC 80 00 00 00 A1 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "hotpatch",
          "patch_size": 2,
          "entry_patch_size": 2
        },
        "sdk": {
          "id": 215,
          "symbol_index": 215,
          "accessor": "DTTR_PCDOGS_F_D3D_CheckDeviceLost",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_CHECK_DEVICE_LOST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_CHECK_DEVICE_LOST"
        }
      }
    },
    "D3D_ClearViewport": {
      "function": {
        "analysis": {
          "en": {
            "address": 4294496,
            "rva": 100192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 450,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 534,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 569,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4294960,
            "rva": 100656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 460,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 337,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 653,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4294960,
            "rva": 100656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 460,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 337,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 653,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 6A 00 68 00 00 80 3F 6A 00 8B 08 6A 03",
          "match_offset": -4
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 217,
          "symbol_index": 217,
          "accessor": "DTTR_PCDOGS_F_D3D_ClearViewport",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_CLEAR_VIEWPORT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_CLEAR_VIEWPORT"
        }
      }
    },
    "D3D_CloseDebugLog": {
      "function": {
        "analysis": {
          "en": {
            "address": 4294560,
            "rva": 100256,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CloseDebugLog_ClosingLog"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4295024,
            "rva": 100720,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CloseDebugLog_ClosingLog"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_GetSelectedDriverInfo"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_CreateEx"
                },
                "instr_offset": 606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 632,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4295024,
            "rva": 100720,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CloseDebugLog_ClosingLog"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_GetSelectedDriverInfo"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_CreateEx"
                },
                "instr_offset": 606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 632,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_CloseDebugLog_ClosingLog"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? 83 C4 1C C3",
          "match_offset": -55
        },
        "docs": "atexit-style shutdown handler that writes the closing entry to the D3D.log debug log and closes it.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 219,
          "symbol_index": 219,
          "accessor": "DTTR_PCDOGS_F_D3D_CloseDebugLog",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_CLOSE_DEBUG_LOG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_CLOSE_DEBUG_LOG"
        }
      }
    },
    "D3D_CloseDebugLog_ClosingLog": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516100,
            "rva": 321796,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524292,
            "rva": 329988,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524292,
            "rva": 329988,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CloseDebugLog"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 159,
          "symbol_index": 159,
          "accessor": "DTTR_PCDOGS_D_D3D_CloseDebugLog_ClosingLog",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CLOSE_DEBUG_LOG_CLOSING_LOG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CLOSE_DEBUG_LOG_CLOSING_LOG"
        }
      }
    },
    "D3D_CreateTextureSurface": {
      "function": {
        "analysis": {
          "en": {
            "address": 4275248,
            "rva": 80944,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_DDrawObject"
                },
                "instr_offset": 726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_ErrCreateTexture"
                },
                "instr_offset": 753,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_ErrNo16BitRGB"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_ErrNo4444RGBA"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_Error"
                },
                "instr_offset": 359,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaBitsToDiscard"
                },
                "instr_offset": 523,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaMask"
                },
                "instr_offset": 435,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaShift"
                },
                "instr_offset": 463,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelBlueBitsToDiscard"
                },
                "instr_offset": 505,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelBlueMask"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelBlueShift"
                },
                "instr_offset": 457,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelGreenBitsToDiscard"
                },
                "instr_offset": 511,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelGreenMask"
                },
                "instr_offset": 487,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelGreenShift"
                },
                "instr_offset": 493,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelRedBitsToDiscard"
                },
                "instr_offset": 517,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelRedMask"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelRedShift"
                },
                "instr_offset": 499,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTexFormatIsSoftware"
                },
                "instr_offset": 387,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTexturePow2Height"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTexturePow2Width"
                },
                "instr_offset": 308,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTextureSurfaceDesc"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_RGBDeviceIID"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_TnLHALDeviceIID"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 761,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 369,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 770,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 920,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4275728,
            "rva": 81424,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_DDrawObject"
                },
                "instr_offset": 726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_ErrCreateTexture"
                },
                "instr_offset": 753,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_ErrNo16BitRGB"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_ErrNo4444RGBA"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_Error"
                },
                "instr_offset": 359,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaBitsToDiscard"
                },
                "instr_offset": 523,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaMask"
                },
                "instr_offset": 435,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaShift"
                },
                "instr_offset": 463,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelBlueBitsToDiscard"
                },
                "instr_offset": 505,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelBlueMask"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelBlueShift"
                },
                "instr_offset": 457,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelGreenBitsToDiscard"
                },
                "instr_offset": 511,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelGreenMask"
                },
                "instr_offset": 487,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelGreenShift"
                },
                "instr_offset": 493,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelRedBitsToDiscard"
                },
                "instr_offset": 517,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelRedMask"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelRedShift"
                },
                "instr_offset": 499,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTexFormatIsSoftware"
                },
                "instr_offset": 387,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTexturePow2Height"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTexturePow2Width"
                },
                "instr_offset": 308,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTextureSurfaceDesc"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_RGBDeviceIID"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_TnLHALDeviceIID"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 761,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 369,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 770,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 920,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4275728,
            "rva": 81424,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_DDrawObject"
                },
                "instr_offset": 726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_ErrCreateTexture"
                },
                "instr_offset": 753,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_ErrNo16BitRGB"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_ErrNo4444RGBA"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_Error"
                },
                "instr_offset": 359,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaBitsToDiscard"
                },
                "instr_offset": 523,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaMask"
                },
                "instr_offset": 435,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaShift"
                },
                "instr_offset": 463,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelBlueBitsToDiscard"
                },
                "instr_offset": 505,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelBlueMask"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelBlueShift"
                },
                "instr_offset": 457,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelGreenBitsToDiscard"
                },
                "instr_offset": 511,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelGreenMask"
                },
                "instr_offset": 487,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelGreenShift"
                },
                "instr_offset": 493,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelRedBitsToDiscard"
                },
                "instr_offset": 517,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelRedMask"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsPixelRedShift"
                },
                "instr_offset": 499,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTexFormatIsSoftware"
                },
                "instr_offset": 387,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTexturePow2Height"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTexturePow2Width"
                },
                "instr_offset": 308,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_GraphicsTextureSurfaceDesc"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_RGBDeviceIID"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateTextureSurface_TnLHALDeviceIID"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 761,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 369,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 770,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 920,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "DDraw_IDirectDrawSurface7*",
          "params": [
            {
              "name": "width",
              "type": "int32_t"
            },
            {
              "name": "height",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_DDrawObject"
            },
            "instr_offset": 726,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_TnLHALDeviceIID"
            },
            "instr_offset": 134,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_RGBDeviceIID"
            },
            "instr_offset": 67,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_ErrCreateTexture"
            },
            "instr_offset": 753,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_ErrNo4444RGBA"
            },
            "instr_offset": 364,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_Error"
            },
            "instr_offset": 359,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_ErrNo16BitRGB"
            },
            "instr_offset": 352,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsTexFormatIsSoftware"
            },
            "instr_offset": 387,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelBlueMask"
            },
            "instr_offset": 451,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsTexturePow2Width"
            },
            "instr_offset": 308,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelBlueShift"
            },
            "instr_offset": 457,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelBlueBitsToDiscard"
            },
            "instr_offset": 505,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelRedMask"
            },
            "instr_offset": 480,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelGreenMask"
            },
            "instr_offset": 487,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsTexturePow2Height"
            },
            "instr_offset": 294,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsTextureSurfaceDesc"
            },
            "instr_offset": 430,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelRedBitsToDiscard"
            },
            "instr_offset": 517,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelRedShift"
            },
            "instr_offset": 499,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaBitsToDiscard"
            },
            "instr_offset": 523,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaShift"
            },
            "instr_offset": 463,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelAlphaMask"
            },
            "instr_offset": 435,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelGreenShift"
            },
            "instr_offset": 493,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateTextureSurface_GraphicsPixelGreenBitsToDiscard"
            },
            "instr_offset": 511,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "81 EC 6C 01 00 00 A1 ??",
          "match_offset": 0
        },
        "docs": "Creates a DirectDraw texture surface for the requested dimensions, using the global IDirectDraw7 interface and cached texture-format state.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 0,
          "symbol_index": 0,
          "accessor": "DTTR_PCDOGS_F_D3D_CreateTextureSurface",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_CREATE_TEXTURE_SURFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_CREATE_TEXTURE_SURFACE"
        }
      }
    },
    "D3D_CreateTextureSurface_DDrawObject": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830000,
            "rva": 23635696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841264,
            "rva": 23646960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840688,
            "rva": 23646384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 726,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "DDraw_IDirectDraw7*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_CreateTextureSurface",
          "instr_offset": 726,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Primary IDirectDraw7 interface used for texture/work/z-buffer surface creation and released during DirectDraw shutdown.",
        "sdk": {
          "id": 0,
          "symbol_index": 0,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_DDrawObject",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_DDRAW_OBJECT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_DDRAW_OBJECT"
        }
      }
    },
    "D3D_CreateTextureSurface_ErrCreateTexture": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515200,
            "rva": 320896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 753,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523392,
            "rva": 329088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 753,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523392,
            "rva": 329088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 753,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 753,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 129,
          "symbol_index": 129,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_ErrCreateTexture",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_ERR_CREATE_TEXTURE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_ERR_CREATE_TEXTURE"
        }
      }
    },
    "D3D_CreateTextureSurface_ErrNo16BitRGB": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515280,
            "rva": 320976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523472,
            "rva": 329168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523472,
            "rva": 329168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 352,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 132,
          "symbol_index": 132,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_ErrNo16BitRGB",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_ERR_NO16_BIT_RGB",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_ERR_NO16_BIT_RGB"
        }
      }
    },
    "D3D_CreateTextureSurface_ErrNo4444RGBA": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515232,
            "rva": 320928,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523424,
            "rva": 329120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523424,
            "rva": 329120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 364,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 130,
          "symbol_index": 130,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_ErrNo4444RGBA",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_ERR_NO4444_RGBA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_ERR_NO4444_RGBA"
        }
      }
    },
    "D3D_CreateTextureSurface_Error": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515264,
            "rva": 320960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 359,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523456,
            "rva": 329152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 359,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523456,
            "rva": 329152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 359,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 359,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 131,
          "symbol_index": 131,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_Error",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_ERROR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_ERROR"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelAlphaBitsToDiscard": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830012,
            "rva": 23635708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 523,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841276,
            "rva": 23646972,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 523,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840700,
            "rva": 23646396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 523,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 523,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 919,
          "symbol_index": 919,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelAlphaBitsToDiscard",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_ALPHA_BITS_TO_DISCARD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_ALPHA_BITS_TO_DISCARD"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelAlphaMask": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830020,
            "rva": 23635716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 435,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841284,
            "rva": 23646980,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 435,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840708,
            "rva": 23646404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 435,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 435,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 921,
          "symbol_index": 921,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelAlphaMask",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_ALPHA_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_ALPHA_MASK"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelAlphaShift": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830016,
            "rva": 23635712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 463,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841280,
            "rva": 23646976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 463,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840704,
            "rva": 23646400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 463,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 463,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 920,
          "symbol_index": 920,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelAlphaShift",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_ALPHA_SHIFT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_ALPHA_SHIFT"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelBlueBitsToDiscard": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908212,
            "rva": 22713908,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 505,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919476,
            "rva": 22725172,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 505,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918900,
            "rva": 22724596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 505,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 505,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 904,
          "symbol_index": 904,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelBlueBitsToDiscard",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_BLUE_BITS_TO_DISCARD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_BLUE_BITS_TO_DISCARD"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelBlueMask": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908088,
            "rva": 22713784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919352,
            "rva": 22725048,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918776,
            "rva": 22724472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 451,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 882,
          "symbol_index": 882,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelBlueMask",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_BLUE_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_BLUE_MASK"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelBlueShift": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908208,
            "rva": 22713904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 457,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919472,
            "rva": 22725168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 457,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918896,
            "rva": 22724592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 457,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 457,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 903,
          "symbol_index": 903,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelBlueShift",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_BLUE_SHIFT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_BLUE_SHIFT"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelGreenBitsToDiscard": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830028,
            "rva": 23635724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 511,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841292,
            "rva": 23646988,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 511,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840716,
            "rva": 23646412,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 511,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 511,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 923,
          "symbol_index": 923,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelGreenBitsToDiscard",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_GREEN_BITS_TO_DISCARD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_GREEN_BITS_TO_DISCARD"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelGreenMask": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908228,
            "rva": 22713924,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 487,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919492,
            "rva": 22725188,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 487,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918916,
            "rva": 22724612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 487,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 487,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 908,
          "symbol_index": 908,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelGreenMask",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_GREEN_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_GREEN_MASK"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelGreenShift": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830024,
            "rva": 23635720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 493,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841288,
            "rva": 23646984,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 493,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840712,
            "rva": 23646408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 493,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 493,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 922,
          "symbol_index": 922,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelGreenShift",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_GREEN_SHIFT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_GREEN_SHIFT"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelRedBitsToDiscard": {
      "data": {
        "analysis": {
          "en": {
            "address": 27829988,
            "rva": 23635684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 517,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841252,
            "rva": 23646948,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 517,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840676,
            "rva": 23646372,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 517,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 517,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 914,
          "symbol_index": 914,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelRedBitsToDiscard",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_RED_BITS_TO_DISCARD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_RED_BITS_TO_DISCARD"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelRedMask": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908224,
            "rva": 22713920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919488,
            "rva": 22725184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918912,
            "rva": 22724608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 480,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 907,
          "symbol_index": 907,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelRedMask",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_RED_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_RED_MASK"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsPixelRedShift": {
      "data": {
        "analysis": {
          "en": {
            "address": 27829996,
            "rva": 23635692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 499,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841260,
            "rva": 23646956,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 499,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840684,
            "rva": 23646380,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 499,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 499,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 916,
          "symbol_index": 916,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsPixelRedShift",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_RED_SHIFT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_PIXEL_RED_SHIFT"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsTexFormatIsSoftware": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562636,
            "rva": 368332,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 387,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570972,
            "rva": 376668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 387,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570956,
            "rva": 376652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 387,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 387,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 467,
          "symbol_index": 467,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsTexFormatIsSoftware",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_TEX_FORMAT_IS_SOFTWARE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_TEX_FORMAT_IS_SOFTWARE"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsTexturePow2Height": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908236,
            "rva": 22713932,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919500,
            "rva": 22725196,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918924,
            "rva": 22724620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 294,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_CreateTextureSurface",
          "instr_offset": 294,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Power-of-two texture height computed by D3D_CreateTextureSurface: rounds requested height up, clamps to 256, and mirrors width when device caps require square textures.",
        "sdk": {
          "id": 910,
          "symbol_index": 910,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsTexturePow2Height",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_TEXTURE_POW2_HEIGHT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_TEXTURE_POW2_HEIGHT"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsTexturePow2Width": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908092,
            "rva": 22713788,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 308,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919356,
            "rva": 22725052,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 308,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918780,
            "rva": 22724476,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 308,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 308,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_CreateTextureSurface",
          "instr_offset": 308,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Power-of-two texture width computed by D3D_CreateTextureSurface: rounds requested width up, clamps to 256, and mirrors height when device caps require square textures.",
        "sdk": {
          "id": 883,
          "symbol_index": 883,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsTexturePow2Width",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_TEXTURE_POW2_WIDTH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_TEXTURE_POW2_WIDTH"
        }
      }
    },
    "D3D_CreateTextureSurface_GraphicsTextureSurfaceDesc": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908256,
            "rva": 22713952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919520,
            "rva": 22725216,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918944,
            "rva": 22724640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 430,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_CreateTextureSurface",
          "instr_offset": 430,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First word of the cached DDSURFACEDESC2 texture surface descriptor copied by D3D_CreateTextureSurface before IDirectDraw7::CreateSurface; SDK typed globals expose the base word.",
        "sdk": {
          "id": 911,
          "symbol_index": 911,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_GraphicsTextureSurfaceDesc",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_TEXTURE_SURFACE_DESC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_GRAPHICS_TEXTURE_SURFACE_DESC"
        }
      }
    },
    "D3D_CreateTextureSurface_RGBDeviceIID": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509896,
            "rva": 315592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518128,
            "rva": 323824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518128,
            "rva": 323824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 67,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 102,
          "symbol_index": 102,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_RGBDeviceIID",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_RGB_DEVICE_IID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_RGB_DEVICE_IID"
        }
      }
    },
    "D3D_CreateTextureSurface_TnLHALDeviceIID": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509864,
            "rva": 315560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518096,
            "rva": 323792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518096,
            "rva": 323792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateTextureSurface"
            },
            "instr_offset": 134,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 100,
          "symbol_index": 100,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateTextureSurface_TnLHALDeviceIID",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_TEXTURE_SURFACE_TN_LHAL_DEVICE_IID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_TEXTURE_SURFACE_TN_LHAL_DEVICE_IID"
        }
      }
    },
    "D3D_CreateWorkSurface": {
      "function": {
        "analysis": {
          "en": {
            "address": 4276208,
            "rva": 81904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateWorkSurface_ErrCreateWorkSurface"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4276688,
            "rva": 82384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateWorkSurface_ErrCreateWorkSurface"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4276688,
            "rva": 82384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_CreateWorkSurface_ErrCreateWorkSurface"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "DDraw_IDirectDrawSurface7*",
          "params": [
            {
              "name": "source_surface",
              "type": "DDraw_IDirectDrawSurface7*"
            },
            {
              "name": "width",
              "type": "int32_t"
            },
            {
              "name": "height",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_CreateWorkSurface_ErrCreateWorkSurface"
            },
            "instr_offset": 180,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "24 00 89 44 24 0C A1 ??",
          "match_offset": -143
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 189,
          "symbol_index": 189,
          "accessor": "DTTR_PCDOGS_F_D3D_CreateWorkSurface",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_CREATE_WORK_SURFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_CREATE_WORK_SURFACE"
        }
      }
    },
    "D3D_CreateWorkSurface_ErrCreateWorkSurface": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515312,
            "rva": 321008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523504,
            "rva": 329200,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523504,
            "rva": 329200,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_CreateWorkSurface"
            },
            "instr_offset": 180,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 133,
          "symbol_index": 133,
          "accessor": "DTTR_PCDOGS_D_D3D_CreateWorkSurface_ErrCreateWorkSurface",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_CREATE_WORK_SURFACE_ERR_CREATE_WORK_SURFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_CREATE_WORK_SURFACE_ERR_CREATE_WORK_SURFACE"
        }
      }
    },
    "D3D_DriverAcceptCallback": {
      "type": {
        "ret": "int32_t",
        "params": [
          {
            "type": "D3D_DriverInfo*",
            "name": "driver_info",
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "function_type_alias",
        "calling_convention": "CALLBACK",
        "sdk": {
          "name": "DTTR_PCDOGS_T_D3D_DriverAcceptCallback"
        }
      }
    },
    "D3D_DriverInfo": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "driver_guid[40]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t*",
            "name": "driver_guid_ptr",
            "offset": 40,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "device_capabilities[236]",
            "offset": 44,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "has_hardware_accel",
            "offset": 280,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "display_mode_list[888]",
            "offset": 284,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "next_driver_offset",
            "offset": 1172,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "driver_flags[4]",
            "offset": 1176,
            "doc": null
          },
          {
            "type": "char*",
            "name": "driver_description",
            "offset": 1180,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "driver_extra_data[12]",
            "offset": 1184,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "colorkey_capability",
            "offset": 1196,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "capability_flags[3]",
            "offset": 1200,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "display_mode_workspace[9936]",
            "offset": 1212,
            "doc": "DDSURFACEDESC2 display-mode workspace populated by DirectDraw enumeration callbacks, with tail counters."
          }
        ],
        "size": 11148,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "DirectDraw/Direct3D driver enumeration record, covering display device selection, hardware acceleration, and display modes.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_D3D_DriverInfo"
        }
      }
    },
    "D3D_EnumDeviceCallback": {
      "function": {
        "analysis": {
          "en": {
            "address": 4297200,
            "rva": 102896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumDeviceCallback_DDrawEnumDeviceList"
                },
                "instr_offset": 58,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4297680,
            "rva": 103376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumDeviceCallback_DDrawEnumDeviceList"
                },
                "instr_offset": 58,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4297680,
            "rva": 103376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumDeviceCallback_DDrawEnumDeviceList"
                },
                "instr_offset": 58,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "device_description",
              "type": "const char*"
            },
            {
              "name": "device_name",
              "type": "const char*"
            },
            {
              "name": "device_desc",
              "type": "void*"
            },
            {
              "name": "enum_context",
              "type": "D3D_DriverInfo*"
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_EnumDeviceCallback_DDrawEnumDeviceList"
            },
            "instr_offset": 58,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 8B 15 ?? ?? ?? ?? 81",
          "match_offset": 0
        },
        "docs": "IDirect3D7::EnumDevices callback: filters/copies accepted D3DDEVICEDESC7 records into the global enumerated-device list and returns TRUE to continue enumeration.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 232,
          "symbol_index": 232,
          "accessor": "DTTR_PCDOGS_F_D3D_EnumDeviceCallback",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_ENUM_DEVICE_CALLBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_ENUM_DEVICE_CALLBACK"
        }
      }
    },
    "D3D_EnumDeviceCallback_DDrawEnumDeviceList": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562656,
            "rva": 368352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumDeviceCallback"
                },
                "instr_offset": 58,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570992,
            "rva": 376688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumDeviceCallback"
                },
                "instr_offset": 58,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570976,
            "rva": 376672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumDeviceCallback"
                },
                "instr_offset": 58,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_EnumDeviceCallback"
            },
            "instr_offset": 58,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 470,
          "symbol_index": 470,
          "accessor": "DTTR_PCDOGS_D_D3D_EnumDeviceCallback_DDrawEnumDeviceList",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_ENUM_DEVICE_CALLBACK_DDRAW_ENUM_DEVICE_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_ENUM_DEVICE_CALLBACK_DDRAW_ENUM_DEVICE_LIST"
        }
      }
    },
    "D3D_EnumZBufferFormatCallback": {
      "function": {
        "analysis": {
          "en": {
            "address": 4291952,
            "rva": 97648,
            "image_base": 4194304
          },
          "eu": {
            "address": 4292416,
            "rva": 98112,
            "image_base": 4194304
          },
          "sc": {
            "address": 4292416,
            "rva": 98112,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "pixel_format",
              "type": "void*"
            },
            {
              "name": "selected_format",
              "type": "void*"
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 81 7E 04 00 04 00 00 75 ?? 57 8B 7C 24 10 B9 08 00 00 00 33 C0 F3 A5 5F 5E C2 08 00 B8 01 00 00 00 5E C2 08 00 90 90 90 90 90 90 A1 ??",
          "match_offset": 0
        },
        "docs": "IDirect3D7::EnumZBufferFormats callback: when the DDPIXELFORMAT flags include DDPF_ZBUFFER (0x400), copies the format to selectedFormat and returns D3DENUMRET_CANCEL/0; otherwise returns D3DENUMRET_OK/1 to continue enumeration.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 209,
          "symbol_index": 209,
          "accessor": "DTTR_PCDOGS_F_D3D_EnumZBufferFormatCallback",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_ENUM_Z_BUFFER_FORMAT_CALLBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_ENUM_Z_BUFFER_FORMAT_CALLBACK"
        }
      }
    },
    "D3D_EnumerateDirectDrawDevices": {
      "function": {
        "analysis": {
          "en": {
            "address": 4296560,
            "rva": 102256,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_DriverAcceptCallback"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_GraphicsAcceptedDeviceCount"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_GraphicsEnumDeviceCount"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_NoDevicesAccepted"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_NoDevicesEnumerated"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_TryRefRasterizer"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_EnumerateExA"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_GetSelectedDriverInfo"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4297040,
            "rva": 102736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_DriverAcceptCallback"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_GraphicsAcceptedDeviceCount"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_GraphicsEnumDeviceCount"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_NoDevicesAccepted"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_NoDevicesEnumerated"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_TryRefRasterizer"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_EnumerateExA"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_GetSelectedDriverInfo"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4297040,
            "rva": 102736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_DriverAcceptCallback"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_GraphicsAcceptedDeviceCount"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_GraphicsEnumDeviceCount"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_NoDevicesAccepted"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_NoDevicesEnumerated"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_EnumerateDirectDrawDevices_TryRefRasterizer"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_EnumerateExA"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_GetSelectedDriverInfo"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "accept_driver",
              "type": "D3D_DriverAcceptCallback"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_EnumerateDirectDrawDevices_TryRefRasterizer"
            },
            "instr_offset": 101,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_EnumerateDirectDrawDevices_NoDevicesAccepted"
            },
            "instr_offset": 76,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_EnumerateDirectDrawDevices_NoDevicesEnumerated"
            },
            "instr_offset": 35,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_EnumerateDirectDrawDevices_DriverAcceptCallback"
            },
            "instr_offset": 14,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_EnumerateDirectDrawDevices_GraphicsEnumDeviceCount"
            },
            "instr_offset": 26,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_EnumerateDirectDrawDevices_GraphicsAcceptedDeviceCount"
            },
            "instr_offset": 67,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 56 6A 07 6A 00 68 ??",
          "match_offset": 0
        },
        "docs": "Runs DirectDrawEnumerateExA with DDraw_EnumerateCallback and stores the caller-provided driver acceptance callback for enumeration filtering; returns 0 on accepted devices, 0x81000002 when no devices/modes were enumerated, or 0x81000003 when no enumerated devices were accepted.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 229,
          "symbol_index": 229,
          "accessor": "DTTR_PCDOGS_F_D3D_EnumerateDirectDrawDevices",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_ENUMERATE_DIRECT_DRAW_DEVICES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_ENUMERATE_DIRECT_DRAW_DEVICES"
        }
      }
    },
    "D3D_EnumerateDirectDrawDevices_DriverAcceptCallback": {
      "data": {
        "analysis": {
          "en": {
            "address": 4801488,
            "rva": 607184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4809824,
            "rva": 615520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4809808,
            "rva": 615504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_EnumerateDirectDrawDevices"
            },
            "instr_offset": 14,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Stores the caller-provided accept_driver callback for the enumeration filter; not a device count (verified live: the store copies the function's first argument).",
        "sdk": {
          "id": 471,
          "symbol_index": 471,
          "accessor": "DTTR_PCDOGS_D_D3D_EnumerateDirectDrawDevices_DriverAcceptCallback",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_DRIVER_ACCEPT_CALLBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_DRIVER_ACCEPT_CALLBACK"
        }
      }
    },
    "D3D_EnumerateDirectDrawDevices_GraphicsAcceptedDeviceCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4801496,
            "rva": 607192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4809832,
            "rva": 615528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4809816,
            "rva": 615512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_EnumerateDirectDrawDevices"
            },
            "instr_offset": 67,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 473,
          "symbol_index": 473,
          "accessor": "DTTR_PCDOGS_D_D3D_EnumerateDirectDrawDevices_GraphicsAcceptedDeviceCount",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_GRAPHICS_ACCEPTED_DEVICE_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_GRAPHICS_ACCEPTED_DEVICE_COUNT"
        }
      }
    },
    "D3D_EnumerateDirectDrawDevices_GraphicsEnumDeviceCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4801492,
            "rva": 607188,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4809828,
            "rva": 615524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4809812,
            "rva": 615508,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_EnumerateDirectDrawDevices"
            },
            "instr_offset": 26,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 472,
          "symbol_index": 472,
          "accessor": "DTTR_PCDOGS_D_D3D_EnumerateDirectDrawDevices_GraphicsEnumDeviceCount",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_GRAPHICS_ENUM_DEVICE_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_GRAPHICS_ENUM_DEVICE_COUNT"
        }
      }
    },
    "D3D_EnumerateDirectDrawDevices_NoDevicesAccepted": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516468,
            "rva": 322164,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524664,
            "rva": 330360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524664,
            "rva": 330360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_EnumerateDirectDrawDevices"
            },
            "instr_offset": 76,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 172,
          "symbol_index": 172,
          "accessor": "DTTR_PCDOGS_D_D3D_EnumerateDirectDrawDevices_NoDevicesAccepted",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_NO_DEVICES_ACCEPTED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_NO_DEVICES_ACCEPTED"
        }
      }
    },
    "D3D_EnumerateDirectDrawDevices_NoDevicesEnumerated": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516508,
            "rva": 322204,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524704,
            "rva": 330400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524704,
            "rva": 330400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_EnumerateDirectDrawDevices"
            },
            "instr_offset": 35,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 173,
          "symbol_index": 173,
          "accessor": "DTTR_PCDOGS_D_D3D_EnumerateDirectDrawDevices_NoDevicesEnumerated",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_NO_DEVICES_ENUMERATED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_NO_DEVICES_ENUMERATED"
        }
      }
    },
    "D3D_EnumerateDirectDrawDevices_TryRefRasterizer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516424,
            "rva": 322120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524620,
            "rva": 330316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524620,
            "rva": 330316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_EnumerateDirectDrawDevices"
            },
            "instr_offset": 101,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 171,
          "symbol_index": 171,
          "accessor": "DTTR_PCDOGS_D_D3D_EnumerateDirectDrawDevices_TryRefRasterizer",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_TRY_REF_RASTERIZER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_ENUMERATE_DIRECT_DRAW_DEVICES_TRY_REF_RASTERIZER"
        }
      }
    },
    "D3D_FormatDirectXError": {
      "function": {
        "analysis": {
          "en": {
            "address": 4298176,
            "rva": 103872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760028RangeDispatchTable"
                },
                "instr_offset": 223,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760028RangeIndexTable"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760091RangeDispatchTable"
                },
                "instr_offset": 332,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760091RangeIndexTable"
                },
                "instr_offset": 326,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887600F0RangeDispatchTable"
                },
                "instr_offset": 513,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887600F0RangeIndexTable"
                },
                "instr_offset": 507,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887601EARangeDispatchTable"
                },
                "instr_offset": 910,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887601EARangeIndexTable"
                },
                "instr_offset": 904,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760247RangeDispatchTable"
                },
                "instr_offset": 1274,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760247RangeIndexTable"
                },
                "instr_offset": 1268,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760280RangeDispatchTable"
                },
                "instr_offset": 1495,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760280RangeIndexTable"
                },
                "instr_offset": 1489,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887602B6RangeDispatchTable"
                },
                "instr_offset": 1567,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrAlreadyInitialized"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCanNotAttach"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCanNotDetach"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCantDuplicate"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCurrentlyNotAvail"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrD3DNotInitialized"
                },
                "instr_offset": 1574,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrGenericFailure"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrInvalidObject"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrInvalidParams"
                },
                "instr_offset": 181,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrInvalidPixelFormat"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNewMode"
                },
                "instr_offset": 1544,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNoFlipHardware"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNoGdi"
                },
                "instr_offset": 520,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNoNonLocalVidMem"
                },
                "instr_offset": 1454,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNotFlippable"
                },
                "instr_offset": 1225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNotInitialized"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNotSupported"
                },
                "instr_offset": 126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrOk"
                },
                "instr_offset": 1609,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrOutOfMemory"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrPageLockFailed"
                },
                "instr_offset": 1502,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrSizeTooLarge"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrWidthTooLarge"
                },
                "instr_offset": 917,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrorUnknownMessage"
                },
                "instr_offset": 1616,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 761,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 846,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 902,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1073,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1426,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 538,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 757,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4298656,
            "rva": 104352,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760028RangeDispatchTable"
                },
                "instr_offset": 223,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760028RangeIndexTable"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760091RangeDispatchTable"
                },
                "instr_offset": 332,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760091RangeIndexTable"
                },
                "instr_offset": 326,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887600F0RangeDispatchTable"
                },
                "instr_offset": 513,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887600F0RangeIndexTable"
                },
                "instr_offset": 507,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887601EARangeDispatchTable"
                },
                "instr_offset": 910,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887601EARangeIndexTable"
                },
                "instr_offset": 904,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760247RangeDispatchTable"
                },
                "instr_offset": 1274,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760247RangeIndexTable"
                },
                "instr_offset": 1268,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760280RangeDispatchTable"
                },
                "instr_offset": 1495,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760280RangeIndexTable"
                },
                "instr_offset": 1489,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887602B6RangeDispatchTable"
                },
                "instr_offset": 1567,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrAlreadyInitialized"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCanNotAttach"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCanNotDetach"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCantDuplicate"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCurrentlyNotAvail"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrD3DNotInitialized"
                },
                "instr_offset": 1574,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrGenericFailure"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrInvalidObject"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrInvalidParams"
                },
                "instr_offset": 181,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrInvalidPixelFormat"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNewMode"
                },
                "instr_offset": 1544,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNoFlipHardware"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNoGdi"
                },
                "instr_offset": 520,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNoNonLocalVidMem"
                },
                "instr_offset": 1454,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNotFlippable"
                },
                "instr_offset": 1225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNotInitialized"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNotSupported"
                },
                "instr_offset": 126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrOk"
                },
                "instr_offset": 1609,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrOutOfMemory"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrPageLockFailed"
                },
                "instr_offset": 1502,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrSizeTooLarge"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrWidthTooLarge"
                },
                "instr_offset": 917,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrorUnknownMessage"
                },
                "instr_offset": 1616,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 761,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 846,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 902,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1073,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1426,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 757,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4298656,
            "rva": 104352,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760028RangeDispatchTable"
                },
                "instr_offset": 223,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760028RangeIndexTable"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760091RangeDispatchTable"
                },
                "instr_offset": 332,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760091RangeIndexTable"
                },
                "instr_offset": 326,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887600F0RangeDispatchTable"
                },
                "instr_offset": 513,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887600F0RangeIndexTable"
                },
                "instr_offset": 507,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887601EARangeDispatchTable"
                },
                "instr_offset": 910,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887601EARangeIndexTable"
                },
                "instr_offset": 904,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760247RangeDispatchTable"
                },
                "instr_offset": 1274,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760247RangeIndexTable"
                },
                "instr_offset": 1268,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760280RangeDispatchTable"
                },
                "instr_offset": 1495,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_88760280RangeIndexTable"
                },
                "instr_offset": 1489,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_887602B6RangeDispatchTable"
                },
                "instr_offset": 1567,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrAlreadyInitialized"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCanNotAttach"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCanNotDetach"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCantDuplicate"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrCurrentlyNotAvail"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrD3DNotInitialized"
                },
                "instr_offset": 1574,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrGenericFailure"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrInvalidObject"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrInvalidParams"
                },
                "instr_offset": 181,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrInvalidPixelFormat"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNewMode"
                },
                "instr_offset": 1544,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNoFlipHardware"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNoGdi"
                },
                "instr_offset": 520,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNoNonLocalVidMem"
                },
                "instr_offset": 1454,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNotFlippable"
                },
                "instr_offset": 1225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNotInitialized"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrNotSupported"
                },
                "instr_offset": 126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrOk"
                },
                "instr_offset": 1609,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrOutOfMemory"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrPageLockFailed"
                },
                "instr_offset": 1502,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrSizeTooLarge"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrWidthTooLarge"
                },
                "instr_offset": 917,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_FormatDirectXError_DDrawErrorUnknownMessage"
                },
                "instr_offset": 1616,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 761,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 846,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 902,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1073,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1426,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 757,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "error_code",
              "type": "HRESULT"
            },
            {
              "name": "out_buffer",
              "type": "char*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_88760028RangeDispatchTable"
            },
            "instr_offset": 223,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_88760028RangeIndexTable"
            },
            "instr_offset": 217,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_88760091RangeDispatchTable"
            },
            "instr_offset": 332,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_88760091RangeIndexTable"
            },
            "instr_offset": 326,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_887600F0RangeDispatchTable"
            },
            "instr_offset": 513,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_887600F0RangeIndexTable"
            },
            "instr_offset": 507,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_887601EARangeDispatchTable"
            },
            "instr_offset": 910,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_887601EARangeIndexTable"
            },
            "instr_offset": 904,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_88760247RangeDispatchTable"
            },
            "instr_offset": 1274,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_88760247RangeIndexTable"
            },
            "instr_offset": 1268,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_88760280RangeDispatchTable"
            },
            "instr_offset": 1495,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_88760280RangeIndexTable"
            },
            "instr_offset": 1489,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_887602B6RangeDispatchTable"
            },
            "instr_offset": 1567,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrorUnknownMessage"
            },
            "instr_offset": 1616,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrOk"
            },
            "instr_offset": 1609,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrD3DNotInitialized"
            },
            "instr_offset": 1574,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrNewMode"
            },
            "instr_offset": 1544,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrPageLockFailed"
            },
            "instr_offset": 1502,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrNoNonLocalVidMem"
            },
            "instr_offset": 1454,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrCantDuplicate"
            },
            "instr_offset": 1281,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrNotFlippable"
            },
            "instr_offset": 1225,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrWidthTooLarge"
            },
            "instr_offset": 917,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrSizeTooLarge"
            },
            "instr_offset": 861,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrOutOfMemory"
            },
            "instr_offset": 680,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrNoGdi"
            },
            "instr_offset": 520,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrNoFlipHardware"
            },
            "instr_offset": 479,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrInvalidPixelFormat"
            },
            "instr_offset": 339,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrInvalidObject"
            },
            "instr_offset": 300,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrCurrentlyNotAvail"
            },
            "instr_offset": 230,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrCanNotDetach"
            },
            "instr_offset": 191,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrInvalidParams"
            },
            "instr_offset": 181,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrAlreadyInitialized"
            },
            "instr_offset": 171,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrCanNotAttach"
            },
            "instr_offset": 161,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrNotSupported"
            },
            "instr_offset": 126,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrGenericFailure"
            },
            "instr_offset": 116,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_FormatDirectXError_DDrawErrNotInitialized"
            },
            "instr_offset": 106,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 3D E0 01 76 88 0F 8F ??",
          "match_offset": 0
        },
        "docs": "Formats a DirectX/DirectDraw HRESULT into a static message buffer using sparse range dispatch/index tables, optionally copies it to outBuffer, and returns the static buffer pointer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 237,
          "symbol_index": 237,
          "accessor": "DTTR_PCDOGS_F_D3D_FormatDirectXError",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_FORMAT_DIRECT_X_ERROR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_FORMAT_DIRECT_X_ERROR"
        }
      }
    },
    "D3D_FormatDirectXError_88760028RangeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4299868,
            "rva": 105564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 223,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4300348,
            "rva": 106044,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 223,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4300348,
            "rva": 106044,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 223,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 223,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 223,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Eight-entry uint32_t jump table for D3D_FormatDirectXError HRESULT values in the 0x88760028..0x88760078 DirectDraw error range.",
        "sdk": {
          "id": 32,
          "symbol_index": 32,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_88760028RangeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_88760028_RANGE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_88760028_RANGE_DISPATCH_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_88760028RangeIndexTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4299900,
            "rva": 105596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4300380,
            "rva": 106076,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4300380,
            "rva": 106076,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 217,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 217,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 217,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Uint8_t lookup table that maps sparse 0x88760028..0x88760078 HRESULT positions to D3D_FormatDirectXError jump-table slots.",
        "sdk": {
          "id": 33,
          "symbol_index": 33,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_88760028RangeIndexTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_88760028_RANGE_INDEX_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_88760028_RANGE_INDEX_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_88760091RangeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4299984,
            "rva": 105680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 332,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4300464,
            "rva": 106160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 332,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4300464,
            "rva": 106160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 332,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 332,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 332,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Fifteen-entry uint32_t jump table for D3D_FormatDirectXError HRESULT values in the 0x88760091..0x887600E1 DirectDraw error range.",
        "sdk": {
          "id": 34,
          "symbol_index": 34,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_88760091RangeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_88760091_RANGE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_88760091_RANGE_DISPATCH_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_88760091RangeIndexTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4300044,
            "rva": 105740,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 326,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4300524,
            "rva": 106220,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 326,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4300524,
            "rva": 106220,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 326,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 326,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 326,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Uint8_t lookup table that maps sparse 0x88760091..0x887600E1 HRESULT positions to D3D_FormatDirectXError jump-table slots.",
        "sdk": {
          "id": 35,
          "symbol_index": 35,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_88760091RangeIndexTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_88760091_RANGE_INDEX_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_88760091_RANGE_INDEX_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_887600F0RangeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4300128,
            "rva": 105824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 513,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4300608,
            "rva": 106304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 513,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4300608,
            "rva": 106304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 513,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 513,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 513,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Thirty-entry uint32_t jump table for D3D_FormatDirectXError HRESULT values in the 0x887600F0..0x887601D6 DirectDraw error range.",
        "sdk": {
          "id": 36,
          "symbol_index": 36,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_887600F0RangeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_887600_F0_RANGE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_887600_F0_RANGE_DISPATCH_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_887600F0RangeIndexTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4300248,
            "rva": 105944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 507,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4300728,
            "rva": 106424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 507,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4300728,
            "rva": 106424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 507,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 507,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 507,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Uint8_t lookup table that maps sparse 0x887600F0..0x887601D6 HRESULT positions to D3D_FormatDirectXError jump-table slots.",
        "sdk": {
          "id": 37,
          "symbol_index": 37,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_887600F0RangeIndexTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_887600_F0_RANGE_INDEX_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_887600_F0_RANGE_INDEX_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_887601EARangeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4300480,
            "rva": 106176,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 910,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4300960,
            "rva": 106656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 910,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4300960,
            "rva": 106656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 910,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 910,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 910,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Thirty-entry uint32_t jump table for D3D_FormatDirectXError HRESULT values in the 0x887601EA..0x88760245 DirectDraw error range.",
        "sdk": {
          "id": 38,
          "symbol_index": 38,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_887601EARangeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_887601_EA_RANGE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_887601_EA_RANGE_DISPATCH_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_887601EARangeIndexTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4300600,
            "rva": 106296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 904,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4301080,
            "rva": 106776,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 904,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4301080,
            "rva": 106776,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 904,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 904,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 904,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Uint8_t lookup table that maps sparse 0x887601EA..0x88760245 HRESULT positions to D3D_FormatDirectXError jump-table slots.",
        "sdk": {
          "id": 39,
          "symbol_index": 39,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_887601EARangeIndexTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_887601_EA_RANGE_INDEX_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_887601_EA_RANGE_INDEX_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_88760247RangeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4300692,
            "rva": 106388,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1274,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4301172,
            "rva": 106868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1274,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4301172,
            "rva": 106868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1274,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1274,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 1274,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Sixteen-entry uint32_t jump table for D3D_FormatDirectXError HRESULT values in the 0x88760247..0x8876026C DirectDraw error range.",
        "sdk": {
          "id": 40,
          "symbol_index": 40,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_88760247RangeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_88760247_RANGE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_88760247_RANGE_DISPATCH_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_88760247RangeIndexTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4300756,
            "rva": 106452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1268,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4301236,
            "rva": 106932,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1268,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4301236,
            "rva": 106932,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1268,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1268,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 1268,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Uint8_t lookup table that maps sparse 0x88760247..0x8876026C HRESULT positions to D3D_FormatDirectXError jump-table slots; 0x88760276 is handled as a separate singleton.",
        "sdk": {
          "id": 41,
          "symbol_index": 41,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_88760247RangeIndexTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_88760247_RANGE_INDEX_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_88760247_RANGE_INDEX_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_88760280RangeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4300796,
            "rva": 106492,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1495,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4301276,
            "rva": 106972,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1495,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4301276,
            "rva": 106972,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1495,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1495,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 1495,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Seven-entry uint32_t jump table for D3D_FormatDirectXError HRESULT values in the 0x88760280..0x887602B4 DirectDraw error range.",
        "sdk": {
          "id": 42,
          "symbol_index": 42,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_88760280RangeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_88760280_RANGE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_88760280_RANGE_DISPATCH_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_88760280RangeIndexTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4300824,
            "rva": 106520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1489,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4301304,
            "rva": 107000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1489,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4301304,
            "rva": 107000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1489,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1489,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 1489,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Uint8_t lookup table that maps sparse 0x88760280..0x887602B4 HRESULT positions to D3D_FormatDirectXError jump-table slots.",
        "sdk": {
          "id": 43,
          "symbol_index": 43,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_88760280RangeIndexTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_88760280_RANGE_INDEX_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_88760280_RANGE_INDEX_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_887602B6RangeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4300880,
            "rva": 106576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1567,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4301360,
            "rva": 107056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1567,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4301360,
            "rva": 107056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1567,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1567,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 1567,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Six-entry uint32_t jump table for D3D_FormatDirectXError HRESULT values in the contiguous 0x887602B6..0x887602BB DirectDraw error range.",
        "sdk": {
          "id": 44,
          "symbol_index": 44,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_887602B6RangeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_887602_B6_RANGE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_887602_B6_RANGE_DISPATCH_TABLE"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrAlreadyInitialized": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525408,
            "rva": 331104,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533604,
            "rva": 339300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533604,
            "rva": 339300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 171,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 194,
          "symbol_index": 194,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrAlreadyInitialized",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_ALREADY_INITIALIZED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_ALREADY_INITIALIZED"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrCanNotAttach": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525444,
            "rva": 331140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533640,
            "rva": 339336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533640,
            "rva": 339336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 161,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 195,
          "symbol_index": 195,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrCanNotAttach",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_CAN_NOT_ATTACH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_CAN_NOT_ATTACH"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrCanNotDetach": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525264,
            "rva": 330960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533460,
            "rva": 339156,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533460,
            "rva": 339156,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 191,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 192,
          "symbol_index": 192,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrCanNotDetach",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_CAN_NOT_DETACH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_CAN_NOT_DETACH"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrCantDuplicate": {
      "data": {
        "analysis": {
          "en": {
            "address": 4518728,
            "rva": 324424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4526924,
            "rva": 332620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4526924,
            "rva": 332620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1281,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 182,
          "symbol_index": 182,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrCantDuplicate",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_CANT_DUPLICATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_CANT_DUPLICATE"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrCurrentlyNotAvail": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525228,
            "rva": 330924,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533424,
            "rva": 339120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533424,
            "rva": 339120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 230,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 191,
          "symbol_index": 191,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrCurrentlyNotAvail",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_CURRENTLY_NOT_AVAIL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_CURRENTLY_NOT_AVAIL"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrD3DNotInitialized": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516904,
            "rva": 322600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1574,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4525100,
            "rva": 330796,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1574,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4525100,
            "rva": 330796,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1574,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1574,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 178,
          "symbol_index": 178,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrD3DNotInitialized",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_D3D_NOT_INITIALIZED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_D3D_NOT_INITIALIZED"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrGenericFailure": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525528,
            "rva": 331224,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533724,
            "rva": 339420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533724,
            "rva": 339420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 116,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 197,
          "symbol_index": 197,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrGenericFailure",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_GENERIC_FAILURE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_GENERIC_FAILURE"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrInvalidObject": {
      "data": {
        "analysis": {
          "en": {
            "address": 4524772,
            "rva": 330468,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4532968,
            "rva": 338664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4532968,
            "rva": 338664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 300,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 190,
          "symbol_index": 190,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrInvalidObject",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_INVALID_OBJECT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_INVALID_OBJECT"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrInvalidParams": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525328,
            "rva": 331024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 181,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533524,
            "rva": 339220,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 181,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533524,
            "rva": 339220,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 181,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 181,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 193,
          "symbol_index": 193,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrInvalidParams",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_INVALID_PARAMS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_INVALID_PARAMS"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrInvalidPixelFormat": {
      "data": {
        "analysis": {
          "en": {
            "address": 4524732,
            "rva": 330428,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4532928,
            "rva": 338624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4532928,
            "rva": 338624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 339,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 189,
          "symbol_index": 189,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrInvalidPixelFormat",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_INVALID_PIXEL_FORMAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_INVALID_PIXEL_FORMAT"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrNewMode": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516940,
            "rva": 322636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1544,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4525136,
            "rva": 330832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1544,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4525136,
            "rva": 330832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1544,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1544,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 179,
          "symbol_index": 179,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrNewMode",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NEW_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NEW_MODE"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrNoFlipHardware": {
      "data": {
        "analysis": {
          "en": {
            "address": 4523724,
            "rva": 329420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4531920,
            "rva": 337616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4531920,
            "rva": 337616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 479,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 188,
          "symbol_index": 188,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrNoFlipHardware",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NO_FLIP_HARDWARE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NO_FLIP_HARDWARE"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrNoGdi": {
      "data": {
        "analysis": {
          "en": {
            "address": 4523696,
            "rva": 329392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 520,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4531892,
            "rva": 337588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 520,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4531892,
            "rva": 337588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 520,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 520,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 187,
          "symbol_index": 187,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrNoGdi",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NO_GDI",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NO_GDI"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrNoNonLocalVidMem": {
      "data": {
        "analysis": {
          "en": {
            "address": 4517324,
            "rva": 323020,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1454,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4525520,
            "rva": 331216,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1454,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4525520,
            "rva": 331216,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1454,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1454,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 181,
          "symbol_index": 181,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrNoNonLocalVidMem",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NO_NON_LOCAL_VID_MEM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NO_NON_LOCAL_VID_MEM"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrNotFlippable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4518808,
            "rva": 324504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4527004,
            "rva": 332700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4527004,
            "rva": 332700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1225,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 183,
          "symbol_index": 183,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrNotFlippable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NOT_FLIPPABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NOT_FLIPPABLE"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrNotInitialized": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525548,
            "rva": 331244,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533744,
            "rva": 339440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533744,
            "rva": 339440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 106,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 198,
          "symbol_index": 198,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrNotInitialized",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NOT_INITIALIZED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NOT_INITIALIZED"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrNotSupported": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525504,
            "rva": 331200,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533700,
            "rva": 339396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533700,
            "rva": 339396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 126,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 196,
          "symbol_index": 196,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrNotSupported",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NOT_SUPPORTED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_NOT_SUPPORTED"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrOk": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516652,
            "rva": 322348,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1609,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524848,
            "rva": 330544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1609,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524848,
            "rva": 330544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1609,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1609,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 177,
          "symbol_index": 177,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrOk",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_OK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_OK"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrOutOfMemory": {
      "data": {
        "analysis": {
          "en": {
            "address": 4522148,
            "rva": 327844,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4530344,
            "rva": 336040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4530344,
            "rva": 336040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 680,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 186,
          "symbol_index": 186,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrOutOfMemory",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_OUT_OF_MEMORY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_OUT_OF_MEMORY"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrPageLockFailed": {
      "data": {
        "analysis": {
          "en": {
            "address": 4517280,
            "rva": 322976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1502,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4525476,
            "rva": 331172,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1502,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4525476,
            "rva": 331172,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1502,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1502,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 180,
          "symbol_index": 180,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrPageLockFailed",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_PAGE_LOCK_FAILED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_PAGE_LOCK_FAILED"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrSizeTooLarge": {
      "data": {
        "analysis": {
          "en": {
            "address": 4520948,
            "rva": 326644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4529144,
            "rva": 334840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4529144,
            "rva": 334840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 861,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 185,
          "symbol_index": 185,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrSizeTooLarge",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_SIZE_TOO_LARGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_SIZE_TOO_LARGE"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrWidthTooLarge": {
      "data": {
        "analysis": {
          "en": {
            "address": 4520904,
            "rva": 326600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 917,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4529100,
            "rva": 334796,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 917,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4529100,
            "rva": 334796,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 917,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 917,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 184,
          "symbol_index": 184,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrWidthTooLarge",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_WIDTH_TOO_LARGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERR_WIDTH_TOO_LARGE"
        }
      }
    },
    "D3D_FormatDirectXError_DDrawErrorUnknownMessage": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516636,
            "rva": 322332,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1616,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524832,
            "rva": 330528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1616,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524832,
            "rva": 330528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1616,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_FormatDirectXError"
            },
            "instr_offset": 1616,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "char",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_FormatDirectXError",
          "instr_offset": 1616,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "NUL-terminated fallback DirectDraw error string used by D3D_FormatDirectXError.",
        "sdk": {
          "id": 176,
          "symbol_index": 176,
          "accessor": "DTTR_PCDOGS_D_D3D_FormatDirectXError_DDrawErrorUnknownMessage",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERROR_UNKNOWN_MESSAGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_FORMAT_DIRECT_X_ERROR_DDRAW_ERROR_UNKNOWN_MESSAGE"
        }
      }
    },
    "D3D_GetDriverEnumerationData": {
      "function": {
        "analysis": {
          "en": {
            "address": 4297792,
            "rva": 103488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SelectBestDriver"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4298272,
            "rva": 103968,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SelectBestDriver"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4298272,
            "rva": 103968,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SelectBestDriver"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "driver_list_out",
              "type": "D3D_DriverInfo**"
            },
            {
              "name": "count_out",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "08 85 C0 74 08 8B 0D ??",
          "match_offset": -17
        },
        "docs": "Writes the global accepted DirectDraw/Direct3D driver list and accepted-device count to caller-provided output pointers.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 233,
          "symbol_index": 233,
          "accessor": "DTTR_PCDOGS_F_D3D_GetDriverEnumerationData",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_GET_DRIVER_ENUMERATION_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_GET_DRIVER_ENUMERATION_DATA"
        }
      }
    },
    "D3D_GetSelectedDriverInfo": {
      "function": {
        "analysis": {
          "en": {
            "address": 4298144,
            "rva": 103840,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SelectBestDriver"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4298624,
            "rva": 104320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SelectBestDriver"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4298624,
            "rva": 104320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SelectBestDriver"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "D3D_DriverInfo*",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8D",
          "match_offset": 0
        },
        "docs": "Enumerates DirectDraw/Direct3D drivers with D3D_AcceptAnyDriver, selects the default/best driver with flags 0, and returns the selected D3D_DriverInfo pointer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 236,
          "symbol_index": 236,
          "accessor": "DTTR_PCDOGS_F_D3D_GetSelectedDriverInfo",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_GET_SELECTED_DRIVER_INFO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_GET_SELECTED_DRIVER_INFO"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D": {
      "function": {
        "analysis": {
          "en": {
            "address": 4290368,
            "rva": 96064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_3D7Interface"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DDrawBackBuffer"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DDrawPrimarySurface"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DDrawZBuffer"
                },
                "instr_offset": 712,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit0"
                },
                "instr_offset": 138,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit1"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit2"
                },
                "instr_offset": 144,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit3"
                },
                "instr_offset": 104,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrAddAttachedSurface"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateDevice7"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateDriverDevice"
                },
                "instr_offset": 839,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateHALDevice"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateRGBDevice"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateSurface"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateZBuffer"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrGetAttachedSurface"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrQueryDirect3D7"
                },
                "instr_offset": 412,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrSetCooperativeLevel"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrSetDisplayMode"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrSetViewport"
                },
                "instr_offset": 1066,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrZEnable"
                },
                "instr_offset": 1419,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectBottom"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectLeft"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectRight"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectTop"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsCooperativeLevelSet"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsSelectedDriverIndex"
                },
                "instr_offset": 433,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsWindowHeight"
                },
                "instr_offset": 86,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_HALDevice"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_SelectedDeviceGuidPtr"
                },
                "instr_offset": 453,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_SoftwareDevice"
                },
                "instr_offset": 687,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_TnLDevice"
                },
                "instr_offset": 664,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_WindowWidth"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_MainHandle"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 846,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 902,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1073,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1426,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 692,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 779,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 855,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 967,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4290832,
            "rva": 96528,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_3D7Interface"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DDrawBackBuffer"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DDrawPrimarySurface"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DDrawZBuffer"
                },
                "instr_offset": 712,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit0"
                },
                "instr_offset": 138,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit1"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit2"
                },
                "instr_offset": 144,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit3"
                },
                "instr_offset": 104,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrAddAttachedSurface"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateDevice7"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateDriverDevice"
                },
                "instr_offset": 839,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateHALDevice"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateRGBDevice"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateSurface"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateZBuffer"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrGetAttachedSurface"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrQueryDirect3D7"
                },
                "instr_offset": 412,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrSetCooperativeLevel"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrSetDisplayMode"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrSetViewport"
                },
                "instr_offset": 1066,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrZEnable"
                },
                "instr_offset": 1419,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectBottom"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectLeft"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectRight"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectTop"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsCooperativeLevelSet"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsSelectedDriverIndex"
                },
                "instr_offset": 433,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsWindowHeight"
                },
                "instr_offset": 86,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_HALDevice"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_SelectedDeviceGuidPtr"
                },
                "instr_offset": 453,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_SoftwareDevice"
                },
                "instr_offset": 687,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_TnLDevice"
                },
                "instr_offset": 664,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_WindowWidth"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_MainHandle"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 846,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 902,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1073,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1426,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 692,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 779,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 855,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 967,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4290832,
            "rva": 96528,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_3D7Interface"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DDrawBackBuffer"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DDrawPrimarySurface"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DDrawZBuffer"
                },
                "instr_offset": 712,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit0"
                },
                "instr_offset": 138,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit1"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit2"
                },
                "instr_offset": 144,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit3"
                },
                "instr_offset": 104,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrAddAttachedSurface"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateDevice7"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateDriverDevice"
                },
                "instr_offset": 839,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateHALDevice"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateRGBDevice"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateSurface"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateZBuffer"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrGetAttachedSurface"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrQueryDirect3D7"
                },
                "instr_offset": 412,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrSetCooperativeLevel"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrSetDisplayMode"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrSetViewport"
                },
                "instr_offset": 1066,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_ErrZEnable"
                },
                "instr_offset": 1419,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectBottom"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectLeft"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectRight"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectTop"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsCooperativeLevelSet"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsSelectedDriverIndex"
                },
                "instr_offset": 433,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_GraphicsWindowHeight"
                },
                "instr_offset": 86,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_HALDevice"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_SelectedDeviceGuidPtr"
                },
                "instr_offset": 453,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_SoftwareDevice"
                },
                "instr_offset": 687,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitDirectDrawAndDirect3D_TnLDevice"
                },
                "instr_offset": 664,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_WindowWidth"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_MainHandle"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 846,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 902,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1073,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 1426,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 692,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 779,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 855,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 967,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "hwnd",
              "type": "HWND"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Window_MainHandle"
            },
            "instr_offset": 5,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_WindowWidth"
            },
            "instr_offset": 92,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_GraphicsCooperativeLevelSet"
            },
            "instr_offset": 17,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrZEnable"
            },
            "instr_offset": 1419,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrSetViewport"
            },
            "instr_offset": 1066,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateRGBDevice"
            },
            "instr_offset": 951,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateHALDevice"
            },
            "instr_offset": 895,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateDriverDevice"
            },
            "instr_offset": 839,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateDevice7"
            },
            "instr_offset": 774,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrAddAttachedSurface"
            },
            "instr_offset": 763,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_SoftwareDevice"
            },
            "instr_offset": 687,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_TnLDevice"
            },
            "instr_offset": 664,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_HALDevice"
            },
            "instr_offset": 623,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateZBuffer"
            },
            "instr_offset": 477,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrQueryDirect3D7"
            },
            "instr_offset": 412,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrGetAttachedSurface"
            },
            "instr_offset": 378,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrCreateSurface"
            },
            "instr_offset": 312,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrSetDisplayMode"
            },
            "instr_offset": 262,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_ErrSetCooperativeLevel"
            },
            "instr_offset": 46,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_GraphicsWindowHeight"
            },
            "instr_offset": 86,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit0"
            },
            "instr_offset": 138,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit1"
            },
            "instr_offset": 133,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit2"
            },
            "instr_offset": 144,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_DeviceInit3"
            },
            "instr_offset": 104,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_SelectedDeviceGuidPtr"
            },
            "instr_offset": 453,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectLeft"
            },
            "instr_offset": 127,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectTop"
            },
            "instr_offset": 156,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectRight"
            },
            "instr_offset": 161,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectBottom"
            },
            "instr_offset": 110,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_GraphicsSelectedDriverIndex"
            },
            "instr_offset": 433,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_3D7Interface"
            },
            "instr_offset": 393,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_DDrawBackBuffer"
            },
            "instr_offset": 333,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_DDrawPrimarySurface"
            },
            "instr_offset": 296,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitDirectDrawAndDirect3D_DDrawZBuffer"
            },
            "instr_offset": 712,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 8B 15 ?? ?? ?? ?? 81",
          "match_offset": 0
        },
        "docs": "Initializes DirectDraw and Direct3D for the main game window, creating the primary/back/z-buffer surfaces and selected Direct3DDevice7.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 1,
          "symbol_index": 1,
          "accessor": "DTTR_PCDOGS_F_D3D_InitDirectDrawAndDirect3D",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_3D7Interface": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908084,
            "rva": 22713780,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919348,
            "rva": 22725044,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918772,
            "rva": 22724468,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 393,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "D3D_IDirect3D7*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_InitDirectDrawAndDirect3D",
          "instr_offset": 393,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "IDirect3D7 interface obtained from IDirectDraw7::QueryInterface; used for device enumeration and device creation.",
        "sdk": {
          "id": 881,
          "symbol_index": 881,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_3D7Interface",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_3_D7_INTERFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_3_D7_INTERFACE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_DDrawBackBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908096,
            "rva": 22713792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919360,
            "rva": 22725056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918784,
            "rva": 22724480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 333,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "DDraw_IDirectDrawSurface7*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_InitDirectDrawAndDirect3D",
          "instr_offset": 333,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Attached DirectDraw back buffer used as the active D3D render target and screenshot source.",
        "sdk": {
          "id": 884,
          "symbol_index": 884,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_DDrawBackBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DDRAW_BACK_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DDRAW_BACK_BUFFER"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_DDrawPrimarySurface": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908100,
            "rva": 22713796,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919364,
            "rva": 22725060,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918788,
            "rva": 22724484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 296,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "DDraw_IDirectDrawSurface7*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_InitDirectDrawAndDirect3D",
          "instr_offset": 296,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Primary/front DirectDraw surface created during D3D initialization and flipped/presented by frame rendering.",
        "sdk": {
          "id": 885,
          "symbol_index": 885,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_DDrawPrimarySurface",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DDRAW_PRIMARY_SURFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DDRAW_PRIMARY_SURFACE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_DDrawZBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 27829984,
            "rva": 23635680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 712,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841248,
            "rva": 23646944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 712,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840672,
            "rva": 23646368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 712,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 712,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "DDraw_IDirectDrawSurface7*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_InitDirectDrawAndDirect3D",
          "instr_offset": 712,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "DirectDraw z-buffer surface attached to the D3D render target and released during D3D/DirectDraw shutdown.",
        "sdk": {
          "id": 913,
          "symbol_index": 913,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_DDrawZBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DDRAW_Z_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DDRAW_Z_BUFFER"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_DeviceInit0": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551648,
            "rva": 357344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 138,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559984,
            "rva": 365680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 138,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559968,
            "rva": 365664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 138,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 138,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 386,
          "symbol_index": 386,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_DeviceInit0",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DEVICE_INIT0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DEVICE_INIT0"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_DeviceInit1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551652,
            "rva": 357348,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559988,
            "rva": 365684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559972,
            "rva": 365668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 133,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 387,
          "symbol_index": 387,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_DeviceInit1",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DEVICE_INIT1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DEVICE_INIT1"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_DeviceInit2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551656,
            "rva": 357352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 144,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559992,
            "rva": 365688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 144,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559976,
            "rva": 365672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 144,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 144,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 388,
          "symbol_index": 388,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_DeviceInit2",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DEVICE_INIT2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DEVICE_INIT2"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_DeviceInit3": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551660,
            "rva": 357356,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 104,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559996,
            "rva": 365692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 104,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559980,
            "rva": 365676,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 104,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 104,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 389,
          "symbol_index": 389,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_DeviceInit3",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DEVICE_INIT3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_DEVICE_INIT3"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrAddAttachedSurface": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515784,
            "rva": 321480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523976,
            "rva": 329672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523976,
            "rva": 329672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 763,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 148,
          "symbol_index": 148,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrAddAttachedSurface",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_ADD_ATTACHED_SURFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_ADD_ATTACHED_SURFACE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrCreateDevice7": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515756,
            "rva": 321452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523948,
            "rva": 329644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523948,
            "rva": 329644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 774,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 147,
          "symbol_index": 147,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrCreateDevice7",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_DEVICE7",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_DEVICE7"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrCreateDriverDevice": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515708,
            "rva": 321404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 839,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523900,
            "rva": 329596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 839,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523900,
            "rva": 329596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 839,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 839,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 146,
          "symbol_index": 146,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrCreateDriverDevice",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_DRIVER_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_DRIVER_DEVICE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrCreateHALDevice": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515652,
            "rva": 321348,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523844,
            "rva": 329540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523844,
            "rva": 329540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 895,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 145,
          "symbol_index": 145,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrCreateHALDevice",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_HAL_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_HAL_DEVICE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrCreateRGBDevice": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515596,
            "rva": 321292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523788,
            "rva": 329484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523788,
            "rva": 329484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 951,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 144,
          "symbol_index": 144,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrCreateRGBDevice",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_RGB_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_RGB_DEVICE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrCreateSurface": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515968,
            "rva": 321664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524160,
            "rva": 329856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524160,
            "rva": 329856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 312,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 155,
          "symbol_index": 155,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrCreateSurface",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_SURFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_SURFACE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrCreateZBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515860,
            "rva": 321556,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524052,
            "rva": 329748,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524052,
            "rva": 329748,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 477,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 152,
          "symbol_index": 152,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrCreateZBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_Z_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_CREATE_Z_BUFFER"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrGetAttachedSurface": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515932,
            "rva": 321628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524124,
            "rva": 329820,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524124,
            "rva": 329820,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 378,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 154,
          "symbol_index": 154,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrGetAttachedSurface",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_GET_ATTACHED_SURFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_GET_ATTACHED_SURFACE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrQueryDirect3D7": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515884,
            "rva": 321580,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 412,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524076,
            "rva": 329772,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 412,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524076,
            "rva": 329772,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 412,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 412,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 153,
          "symbol_index": 153,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrQueryDirect3D7",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_QUERY_DIRECT3D7",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_QUERY_DIRECT3D7"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrSetCooperativeLevel": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516032,
            "rva": 321728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524224,
            "rva": 329920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524224,
            "rva": 329920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 46,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 157,
          "symbol_index": 157,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrSetCooperativeLevel",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_SET_COOPERATIVE_LEVEL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_SET_COOPERATIVE_LEVEL"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrSetDisplayMode": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516000,
            "rva": 321696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524192,
            "rva": 329888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524192,
            "rva": 329888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 262,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 156,
          "symbol_index": 156,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrSetDisplayMode",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_SET_DISPLAY_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_SET_DISPLAY_MODE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrSetViewport": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515564,
            "rva": 321260,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1066,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523756,
            "rva": 329452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1066,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523756,
            "rva": 329452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1066,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 1066,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 143,
          "symbol_index": 143,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrSetViewport",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_SET_VIEWPORT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_SET_VIEWPORT"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_ErrZEnable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515548,
            "rva": 321244,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1419,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523740,
            "rva": 329436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1419,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523740,
            "rva": 329436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1419,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 1419,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 142,
          "symbol_index": 142,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_ErrZEnable",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_Z_ENABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_ERR_Z_ENABLE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectBottom": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556436,
            "rva": 362132,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564772,
            "rva": 370468,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564756,
            "rva": 370452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 110,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 433,
          "symbol_index": 433,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_GraphicsClientRectBottom",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_CLIENT_RECT_BOTTOM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_CLIENT_RECT_BOTTOM"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectLeft": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556424,
            "rva": 362120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564760,
            "rva": 370456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564744,
            "rva": 370440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 127,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Client-rectangle left coordinate local value used during DirectDraw/Direct3D initialization.",
        "sdk": {
          "id": 430,
          "symbol_index": 430,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_GraphicsClientRectLeft",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_CLIENT_RECT_LEFT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_CLIENT_RECT_LEFT"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectRight": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556432,
            "rva": 362128,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564768,
            "rva": 370464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564752,
            "rva": 370448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 161,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Client-rectangle right coordinate local value used during DirectDraw/Direct3D initialization.",
        "sdk": {
          "id": 432,
          "symbol_index": 432,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_GraphicsClientRectRight",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_CLIENT_RECT_RIGHT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_CLIENT_RECT_RIGHT"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_GraphicsClientRectTop": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556428,
            "rva": 362124,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564764,
            "rva": 370460,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564748,
            "rva": 370444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 156,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 431,
          "symbol_index": 431,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_GraphicsClientRectTop",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_CLIENT_RECT_TOP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_CLIENT_RECT_TOP"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_GraphicsCooperativeLevelSet": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515100,
            "rva": 320796,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523292,
            "rva": 328988,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523292,
            "rva": 328988,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 17,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 123,
          "symbol_index": 123,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_GraphicsCooperativeLevelSet",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_COOPERATIVE_LEVEL_SET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_COOPERATIVE_LEVEL_SET"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_GraphicsSelectedDriverIndex": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562632,
            "rva": 368328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 433,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570968,
            "rva": 376664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 433,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570952,
            "rva": 376648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 433,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 433,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 466,
          "symbol_index": 466,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_GraphicsSelectedDriverIndex",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_SELECTED_DRIVER_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_SELECTED_DRIVER_INDEX"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_GraphicsWindowHeight": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528104,
            "rva": 333800,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 86,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536300,
            "rva": 341996,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 86,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536300,
            "rva": 341996,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 86,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 86,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_InitDirectDrawAndDirect3D",
          "instr_offset": 86,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Active render/window height in pixels initialized during DirectDraw/Direct3D setup.",
        "sdk": {
          "id": 281,
          "symbol_index": 281,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_GraphicsWindowHeight",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_WINDOW_HEIGHT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_GRAPHICS_WINDOW_HEIGHT"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_HALDevice": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515848,
            "rva": 321544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524040,
            "rva": 329736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524040,
            "rva": 329736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 623,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 151,
          "symbol_index": 151,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_HALDevice",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_HAL_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_HAL_DEVICE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_SelectedDeviceGuidPtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553908,
            "rva": 359604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 453,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4562244,
            "rva": 367940,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 453,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4562228,
            "rva": 367924,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 453,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 453,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Win32_GUID*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_InitDirectDrawAndDirect3D",
          "instr_offset": 453,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "unknown",
        "docs": "Pointer to the GUID of the DirectDraw device selected during D3D initialization.",
        "sdk": {
          "id": 412,
          "symbol_index": 412,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_SelectedDeviceGuidPtr",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_SELECTED_DEVICE_GUID_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_SELECTED_DEVICE_GUID_PTR"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_SoftwareDevice": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515820,
            "rva": 321516,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 687,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524012,
            "rva": 329708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 687,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524012,
            "rva": 329708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 687,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 687,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 149,
          "symbol_index": 149,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_SoftwareDevice",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_SOFTWARE_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_SOFTWARE_DEVICE"
        }
      }
    },
    "D3D_InitDirectDrawAndDirect3D_TnLDevice": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515836,
            "rva": 321532,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 664,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524028,
            "rva": 329724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 664,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524028,
            "rva": 329724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 664,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 664,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 150,
          "symbol_index": 150,
          "accessor": "DTTR_PCDOGS_D_D3D_InitDirectDrawAndDirect3D_TnLDevice",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_TN_L_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INIT_DIRECT_DRAW_AND_DIRECT3D_TN_L_DEVICE"
        }
      }
    },
    "D3D_InitializeCapabilities": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4450209,
            "rva": 255905,
            "image_base": 4194304
          },
          "eu": {
            "address": 4455482,
            "rva": 261178,
            "image_base": 4194304
          },
          "sc": {
            "address": 4455450,
            "rva": 261146,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 50 A3"
      }
    },
    "D3D_InitializeDirectDraw": {
      "function": {
        "analysis": {
          "en": {
            "address": 4294624,
            "rva": 100320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_CanUseColorKey"
                },
                "instr_offset": 375,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawDirectDraw7GUID"
                },
                "instr_offset": 503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawEnumDriverData"
                },
                "instr_offset": 299,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam0"
                },
                "instr_offset": 137,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam2"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam3"
                },
                "instr_offset": 179,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam4"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitScratchParam1"
                },
                "instr_offset": 156,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitState0"
                },
                "instr_offset": 231,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitState1"
                },
                "instr_offset": 363,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_GraphicsCanFlipSurfaces"
                },
                "instr_offset": 594,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_GraphicsDriverInitialized"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_Log"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_LogFileMode"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_LogSeparator"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_OpenLog"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_SelectedDriverHeader"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 538,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_GetSelectedDriverInfo"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_CreateEx"
                },
                "instr_offset": 521,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeResourceGameEngine"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_CanUseColorKey"
                },
                "instr_offset": 375,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawDirectDraw7GUID"
                },
                "instr_offset": 503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawEnumDriverData"
                },
                "instr_offset": 299,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam0"
                },
                "instr_offset": 137,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam2"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam3"
                },
                "instr_offset": 179,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam4"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitScratchParam1"
                },
                "instr_offset": 156,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitState0"
                },
                "instr_offset": 231,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitState1"
                },
                "instr_offset": 363,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_GraphicsCanFlipSurfaces"
                },
                "instr_offset": 594,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_GraphicsDriverInitialized"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_Log"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_LogFileMode"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_LogSeparator"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_OpenLog"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_SelectedDriverHeader"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_CanUseColorKey"
                },
                "instr_offset": 375,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawDirectDraw7GUID"
                },
                "instr_offset": 503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawEnumDriverData"
                },
                "instr_offset": 299,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam0"
                },
                "instr_offset": 137,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam2"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam3"
                },
                "instr_offset": 179,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitParam4"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitScratchParam1"
                },
                "instr_offset": 156,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitState0"
                },
                "instr_offset": 231,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_DDrawInitState1"
                },
                "instr_offset": 363,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_GraphicsCanFlipSurfaces"
                },
                "instr_offset": 594,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_GraphicsDriverInitialized"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_Log"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_LogFileMode"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_LogSeparator"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_OpenLog"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_InitializeDirectDraw_SelectedDriverHeader"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_DDrawDirectDraw7GUID"
            },
            "instr_offset": 503,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_LogSeparator"
            },
            "instr_offset": 437,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_CanUseColorKey"
            },
            "instr_offset": 375,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_SelectedDriverHeader"
            },
            "instr_offset": 125,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_OpenLog"
            },
            "instr_offset": 46,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_Log"
            },
            "instr_offset": 21,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_LogFileMode"
            },
            "instr_offset": 16,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_DDrawEnumDriverData"
            },
            "instr_offset": 299,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_DDrawInitState0"
            },
            "instr_offset": 231,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_DDrawInitState1"
            },
            "instr_offset": 363,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_DDrawInitParam0"
            },
            "instr_offset": 137,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_DDrawInitScratchParam1"
            },
            "instr_offset": 156,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_DDrawInitParam2"
            },
            "instr_offset": 165,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_DDrawInitParam3"
            },
            "instr_offset": 179,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_DDrawInitParam4"
            },
            "instr_offset": 174,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_GraphicsDriverInitialized"
            },
            "instr_offset": 115,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_InitializeDirectDraw_GraphicsCanFlipSurfaces"
            },
            "instr_offset": 594,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "81 EC 7C 02 00 00 C7 05 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 220,
          "symbol_index": 220,
          "accessor": "DTTR_PCDOGS_F_D3D_InitializeDirectDraw",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_INITIALIZE_DIRECT_DRAW",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_INITIALIZE_DIRECT_DRAW"
        }
      }
    },
    "D3D_InitializeDirectDraw_CanUseColorKey": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516184,
            "rva": 321880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 375,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 375,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 375,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 375,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 161,
          "symbol_index": 161,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_CanUseColorKey",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_CAN_USE_COLOR_KEY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_CAN_USE_COLOR_KEY"
        }
      }
    },
    "D3D_InitializeDirectDraw_DDrawDirectDraw7GUID": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509848,
            "rva": 315544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 503,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 99,
          "symbol_index": 99,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_DDrawDirectDraw7GUID",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_DIRECT_DRAW7_GUID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_DIRECT_DRAW7_GUID"
        }
      }
    },
    "D3D_InitializeDirectDraw_DDrawEnumDriverData": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553912,
            "rva": 359608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 299,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 299,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 299,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 299,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 413,
          "symbol_index": 413,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_DDrawEnumDriverData",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_ENUM_DRIVER_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_ENUM_DRIVER_DATA"
        }
      }
    },
    "D3D_InitializeDirectDraw_DDrawInitParam0": {
      "data": {
        "analysis": {
          "en": {
            "address": 4554080,
            "rva": 359776,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 137,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 137,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 137,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 137,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Driver-summary slot[1] field; the record shares storage with the graphics clip scratch region.",
        "sdk": {
          "id": 416,
          "symbol_index": 416,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_DDrawInitParam0",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_PARAM0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_PARAM0"
        }
      }
    },
    "D3D_InitializeDirectDraw_DDrawInitParam2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4554088,
            "rva": 359784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 165,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 418,
          "symbol_index": 418,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_DDrawInitParam2",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_PARAM2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_PARAM2"
        }
      }
    },
    "D3D_InitializeDirectDraw_DDrawInitParam3": {
      "data": {
        "analysis": {
          "en": {
            "address": 4554092,
            "rva": 359788,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 179,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 179,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 179,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 179,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 419,
          "symbol_index": 419,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_DDrawInitParam3",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_PARAM3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_PARAM3"
        }
      }
    },
    "D3D_InitializeDirectDraw_DDrawInitParam4": {
      "data": {
        "analysis": {
          "en": {
            "address": 4554096,
            "rva": 359792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 174,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Driver-summary slot[1] field; the record shares storage with the graphics clip scratch region.",
        "sdk": {
          "id": 420,
          "symbol_index": 420,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_DDrawInitParam4",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_PARAM4",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_PARAM4"
        }
      }
    },
    "D3D_InitializeDirectDraw_DDrawInitScratchParam1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4554084,
            "rva": 359780,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 156,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 156,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 156,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 156,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Generic DirectDraw-init local parameter cell used during setup.",
        "sdk": {
          "id": 417,
          "symbol_index": 417,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_DDrawInitScratchParam1",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_SCRATCH_PARAM1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_SCRATCH_PARAM1"
        }
      }
    },
    "D3D_InitializeDirectDraw_DDrawInitState0": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553992,
            "rva": 359688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 231,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 231,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 231,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 231,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 414,
          "symbol_index": 414,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_DDrawInitState0",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_STATE0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_STATE0"
        }
      }
    },
    "D3D_InitializeDirectDraw_DDrawInitState1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4554072,
            "rva": 359768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 363,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 363,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 363,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 363,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 415,
          "symbol_index": 415,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_DDrawInitState1",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_STATE1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_DDRAW_INIT_STATE1"
        }
      }
    },
    "D3D_InitializeDirectDraw_GraphicsCanFlipSurfaces": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908080,
            "rva": 22713776,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 594,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 594,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 594,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 594,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 880,
          "symbol_index": 880,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_GraphicsCanFlipSurfaces",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_GRAPHICS_CAN_FLIP_SURFACES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_GRAPHICS_CAN_FLIP_SURFACES"
        }
      }
    },
    "D3D_InitializeDirectDraw_GraphicsDriverInitialized": {
      "data": {
        "analysis": {
          "en": {
            "address": 4554260,
            "rva": 359956,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 115,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 421,
          "symbol_index": 421,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_GraphicsDriverInitialized",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_GRAPHICS_DRIVER_INITIALIZED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_GRAPHICS_DRIVER_INITIALIZED"
        }
      }
    },
    "D3D_InitializeDirectDraw_Log": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516292,
            "rva": 321988,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 21,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 164,
          "symbol_index": 164,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_Log",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_LOG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_LOG"
        }
      }
    },
    "D3D_InitializeDirectDraw_LogFileMode": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516300,
            "rva": 321996,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 16,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 165,
          "symbol_index": 165,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_LogFileMode",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_LOG_FILE_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_LOG_FILE_MODE"
        }
      }
    },
    "D3D_InitializeDirectDraw_LogSeparator": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516136,
            "rva": 321832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 437,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 160,
          "symbol_index": 160,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_LogSeparator",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_LOG_SEPARATOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_LOG_SEPARATOR"
        }
      }
    },
    "D3D_InitializeDirectDraw_OpenLog": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516256,
            "rva": 321952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 46,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 163,
          "symbol_index": 163,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_OpenLog",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_OPEN_LOG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_OPEN_LOG"
        }
      }
    },
    "D3D_InitializeDirectDraw_SelectedDriverHeader": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516208,
            "rva": 321904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitializeDirectDraw"
            },
            "instr_offset": 125,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 162,
          "symbol_index": 162,
          "accessor": "DTTR_PCDOGS_D_D3D_InitializeDirectDraw_SelectedDriverHeader",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_INITIALIZE_DIRECT_DRAW_SELECTED_DRIVER_HEADER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_INITIALIZE_DIRECT_DRAW_SELECTED_DRIVER_HEADER"
        }
      }
    },
    "D3D_ReleaseAllAndReportLeaks": {
      "function": {
        "analysis": {
          "en": {
            "address": 4292000,
            "rva": 97696,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_ReleaseAllAndReportLeaks_TexturesStillActive"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_ReleaseMode"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4292464,
            "rva": 98160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_ReleaseAllAndReportLeaks_TexturesStillActive"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_ReleaseMode"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4292464,
            "rva": 98160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_ReleaseAllAndReportLeaks_TexturesStillActive"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_ReleaseMode"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_ReleaseAllAndReportLeaks_TexturesStillActive"
            },
            "instr_offset": 143,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 56 33 F6 3B C6 74 ?? 8B",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 210,
          "symbol_index": 210,
          "accessor": "DTTR_PCDOGS_F_D3D_ReleaseAllAndReportLeaks",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_RELEASE_ALL_AND_REPORT_LEAKS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_RELEASE_ALL_AND_REPORT_LEAKS"
        }
      }
    },
    "D3D_ReleaseAllAndReportLeaks_TexturesStillActive": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516072,
            "rva": 321768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_ReleaseAllAndReportLeaks"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524264,
            "rva": 329960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_ReleaseAllAndReportLeaks"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524264,
            "rva": 329960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_ReleaseAllAndReportLeaks"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_ReleaseAllAndReportLeaks"
            },
            "instr_offset": 143,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 158,
          "symbol_index": 158,
          "accessor": "DTTR_PCDOGS_D_D3D_ReleaseAllAndReportLeaks_TexturesStillActive",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_RELEASE_ALL_AND_REPORT_LEAKS_TEXTURES_STILL_ACTIVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_RELEASE_ALL_AND_REPORT_LEAKS_TEXTURES_STILL_ACTIVE"
        }
      }
    },
    "D3D_ReleaseDirectDrawDevice": {
      "function": {
        "analysis": {
          "en": {
            "address": 4295264,
            "rva": 100960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_ShutdownResourceGameSubsystems"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4295744,
            "rva": 101440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_ShutdownResourceGameSubsystems"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4295744,
            "rva": 101440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_ShutdownResourceGameSubsystems"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? 8B 08",
          "match_offset": 0
        },
        "docs": "Releases the global IDirectDraw7 interface, clears the global pointer, and returns the COM Release refcount or 0 when no interface was present.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 221,
          "symbol_index": 221,
          "accessor": "DTTR_PCDOGS_F_D3D_ReleaseDirectDrawDevice",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_RELEASE_DIRECT_DRAW_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_RELEASE_DIRECT_DRAW_DEVICE"
        }
      }
    },
    "D3D_RenderTexturedQuad": {
      "function": {
        "analysis": {
          "en": {
            "address": 4293792,
            "rva": 99488,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 560,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4294256,
            "rva": 99952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4294256,
            "rva": 99952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "blend_textures",
              "type": "Material_BlendTextureSet*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "81 EC 80 00 00 00 A1 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 216,
          "symbol_index": 216,
          "accessor": "DTTR_PCDOGS_F_D3D_RenderTexturedQuad",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_RENDER_TEXTURED_QUAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_RENDER_TEXTURED_QUAD"
        }
      }
    },
    "D3D_SelectBestDriver": {
      "function": {
        "analysis": {
          "en": {
            "address": 4297824,
            "rva": 103520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SelectBestDriver_HALDeviceIID"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_GetDriverEnumerationData"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_GetSelectedDriverInfo"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4298304,
            "rva": 104000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SelectBestDriver_HALDeviceIID"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_GetDriverEnumerationData"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_GetSelectedDriverInfo"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4298304,
            "rva": 104000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SelectBestDriver_HALDeviceIID"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_GetDriverEnumerationData"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_GetSelectedDriverInfo"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "selected_driver_out",
              "type": "D3D_DriverInfo**"
            },
            {
              "name": "flags",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_SelectBestDriver_HALDeviceIID"
            },
            "instr_offset": 120,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8D 4C 24 20 50 51 E8 ??",
          "match_offset": -50
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 234,
          "symbol_index": 234,
          "accessor": "DTTR_PCDOGS_F_D3D_SelectBestDriver",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_SELECT_BEST_DRIVER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_SELECT_BEST_DRIVER"
        }
      }
    },
    "D3D_SelectBestDriver_HALDeviceIID": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509880,
            "rva": 315576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SelectBestDriver"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518112,
            "rva": 323808,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SelectBestDriver"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518112,
            "rva": 323808,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SelectBestDriver"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_SelectBestDriver"
            },
            "instr_offset": 120,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 101,
          "symbol_index": 101,
          "accessor": "DTTR_PCDOGS_D_D3D_SelectBestDriver_HALDeviceIID",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_SELECT_BEST_DRIVER_HAL_DEVICE_IID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_SELECT_BEST_DRIVER_HAL_DEVICE_IID"
        }
      }
    },
    "D3D_SetBlendMode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4279664,
            "rva": 85360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetBlendMode_GraphicsCurrentBlendMode"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetBlendMode_GraphicsTextRenderingMode"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFilledRectangleGradient"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuad"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuadMaterialSize"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 235,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4280144,
            "rva": 85840,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetBlendMode_GraphicsCurrentBlendMode"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetBlendMode_GraphicsTextRenderingMode"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFilledRectangleGradient"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuad"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuadMaterialSize"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 235,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 687,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4280144,
            "rva": 85840,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetBlendMode_GraphicsCurrentBlendMode"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetBlendMode_GraphicsTextRenderingMode"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFilledRectangleGradient"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuad"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuadMaterialSize"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 235,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 687,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint8_t",
          "params": [
            {
              "name": "blend_mode",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_SetBlendMode_GraphicsCurrentBlendMode"
            },
            "instr_offset": 152,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_SetBlendMode_GraphicsTextRenderingMode"
            },
            "instr_offset": 14,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 56 8B 74 24 0C 85 F6 0F 85 ??",
          "match_offset": 0
        },
        "docs": "Configures D3D blend/render state and returns an AL alpha/color byte for the selected blend mode.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 194,
          "symbol_index": 194,
          "accessor": "DTTR_PCDOGS_F_D3D_SetBlendMode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_SET_BLEND_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_SET_BLEND_MODE"
        }
      }
    },
    "D3D_SetBlendMode_GraphicsCurrentBlendMode": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562612,
            "rva": 368308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570948,
            "rva": 376644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570932,
            "rva": 376628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_SetBlendMode"
            },
            "instr_offset": 152,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_SetBlendMode",
          "instr_offset": 152,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "sdk": {
          "id": 461,
          "symbol_index": 461,
          "accessor": "DTTR_PCDOGS_D_D3D_SetBlendMode_GraphicsCurrentBlendMode",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_SET_BLEND_MODE_GRAPHICS_CURRENT_BLEND_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_SET_BLEND_MODE_GRAPHICS_CURRENT_BLEND_MODE"
        }
      }
    },
    "D3D_SetBlendMode_GraphicsTextRenderingMode": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908020,
            "rva": 22713716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919284,
            "rva": 22724980,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918708,
            "rva": 22724404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_SetBlendMode"
            },
            "instr_offset": 14,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_SetBlendMode",
          "instr_offset": 14,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "sdk": {
          "id": 867,
          "symbol_index": 867,
          "accessor": "DTTR_PCDOGS_D_D3D_SetBlendMode_GraphicsTextRenderingMode",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_SET_BLEND_MODE_GRAPHICS_TEXT_RENDERING_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_SET_BLEND_MODE_GRAPHICS_TEXT_RENDERING_MODE"
        }
      }
    },
    "D3D_SetGammaFromMenuSetting": {
      "function": {
        "analysis": {
          "en": {
            "address": 4444288,
            "rva": 249984,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaFromMenuSetting_GraphicsDefaultGamma"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaFromMenuSetting_GraphicsGammaStep"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 602,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4449536,
            "rva": 255232,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaFromMenuSetting_GraphicsDefaultGamma"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaFromMenuSetting_GraphicsGammaStep"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 602,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4449504,
            "rva": 255200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaFromMenuSetting_GraphicsDefaultGamma"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaFromMenuSetting_GraphicsGammaStep"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 602,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "gamma_setting",
              "type": "int32_t",
              "docs": "Integer menu gamma setting centered at 5; values below/above 5 map by 0.2 gamma-scale steps."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_SetGammaFromMenuSetting_GraphicsGammaStep"
            },
            "instr_offset": 58,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_SetGammaFromMenuSetting_GraphicsDefaultGamma"
            },
            "instr_offset": 4,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "DB 44 24 04 D8 15 ??",
          "match_offset": 0
        },
        "docs": "Converts the 0..10 menu gamma setting to a D3D gamma scale, clamps low values to 0.1, and forwards the scale to D3D_SetGammaRamp.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 513,
          "symbol_index": 513,
          "accessor": "DTTR_PCDOGS_F_D3D_SetGammaFromMenuSetting",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_SET_GAMMA_FROM_MENU_SETTING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_SET_GAMMA_FROM_MENU_SETTING"
        }
      }
    },
    "D3D_SetGammaFromMenuSetting_GraphicsDefaultGamma": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509808,
            "rva": 315504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518036,
            "rva": 323732,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518036,
            "rva": 323732,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_SetGammaFromMenuSetting"
            },
            "instr_offset": 4,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 93,
          "symbol_index": 93,
          "accessor": "DTTR_PCDOGS_D_D3D_SetGammaFromMenuSetting_GraphicsDefaultGamma",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_SET_GAMMA_FROM_MENU_SETTING_GRAPHICS_DEFAULT_GAMMA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_SET_GAMMA_FROM_MENU_SETTING_GRAPHICS_DEFAULT_GAMMA"
        }
      }
    },
    "D3D_SetGammaFromMenuSetting_GraphicsGammaStep": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509804,
            "rva": 315500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518032,
            "rva": 323728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518032,
            "rva": 323728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_SetGammaFromMenuSetting"
            },
            "instr_offset": 58,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 92,
          "symbol_index": 92,
          "accessor": "DTTR_PCDOGS_D_D3D_SetGammaFromMenuSetting_GraphicsGammaStep",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_SET_GAMMA_FROM_MENU_SETTING_GRAPHICS_GAMMA_STEP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_SET_GAMMA_FROM_MENU_SETTING_GRAPHICS_GAMMA_STEP"
        }
      }
    },
    "D3D_SetGammaRamp": {
      "function": {
        "analysis": {
          "en": {
            "address": 4296160,
            "rva": 101856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_DDrawGammaControlGUID"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_ErrQueryGammaControl"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_ErrSetGammaControl"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_GraphicsGammaControl"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_NotSupported"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 297,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4296640,
            "rva": 102336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_DDrawGammaControlGUID"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_ErrQueryGammaControl"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_ErrSetGammaControl"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_GraphicsGammaControl"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_NotSupported"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 297,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4296640,
            "rva": 102336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_DDrawGammaControlGUID"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_ErrQueryGammaControl"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_ErrSetGammaControl"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_GraphicsGammaControl"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "D3D_SetGammaRamp_NotSupported"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 288,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 297,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "gamma_scale",
              "type": "float"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "D3D_SetGammaRamp_DDrawGammaControlGUID"
            },
            "instr_offset": 130,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_SetGammaRamp_ErrSetGammaControl"
            },
            "instr_offset": 280,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_SetGammaRamp_ErrQueryGammaControl"
            },
            "instr_offset": 144,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_SetGammaRamp_NotSupported"
            },
            "instr_offset": 89,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "D3D_SetGammaRamp_GraphicsGammaControl"
            },
            "instr_offset": 110,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "D9 44 24 04 D8 1D ?? ?? ?? ?? 8B",
          "match_offset": 0
        },
        "docs": "Caches the requested gamma scale, clamps the applied gamma to 0.1 for inputs below 0.1 and to 5.0 for inputs above 10.0, builds a RGB DirectDraw gamma ramp through IDirectDrawGammaControl, and returns the residual HRESULT/status from the DirectDraw calls.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 227,
          "symbol_index": 227,
          "accessor": "DTTR_PCDOGS_F_D3D_SetGammaRamp",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_SET_GAMMA_RAMP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_SET_GAMMA_RAMP"
        }
      }
    },
    "D3D_SetGammaRamp_DDrawGammaControlGUID": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509832,
            "rva": 315528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518064,
            "rva": 323760,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518064,
            "rva": 323760,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_SetGammaRamp"
            },
            "instr_offset": 130,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 98,
          "symbol_index": 98,
          "accessor": "DTTR_PCDOGS_D_D3D_SetGammaRamp_DDrawGammaControlGUID",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_SET_GAMMA_RAMP_DDRAW_GAMMA_CONTROL_GUID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_SET_GAMMA_RAMP_DDRAW_GAMMA_CONTROL_GUID"
        }
      }
    },
    "D3D_SetGammaRamp_ErrQueryGammaControl": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516344,
            "rva": 322040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524540,
            "rva": 330236,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524540,
            "rva": 330236,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_SetGammaRamp"
            },
            "instr_offset": 144,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 169,
          "symbol_index": 169,
          "accessor": "DTTR_PCDOGS_D_D3D_SetGammaRamp_ErrQueryGammaControl",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_SET_GAMMA_RAMP_ERR_QUERY_GAMMA_CONTROL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_SET_GAMMA_RAMP_ERR_QUERY_GAMMA_CONTROL"
        }
      }
    },
    "D3D_SetGammaRamp_ErrSetGammaControl": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516324,
            "rva": 322020,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524520,
            "rva": 330216,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524520,
            "rva": 330216,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_SetGammaRamp"
            },
            "instr_offset": 280,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 168,
          "symbol_index": 168,
          "accessor": "DTTR_PCDOGS_D_D3D_SetGammaRamp_ErrSetGammaControl",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_SET_GAMMA_RAMP_ERR_SET_GAMMA_CONTROL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_SET_GAMMA_RAMP_ERR_SET_GAMMA_CONTROL"
        }
      }
    },
    "D3D_SetGammaRamp_GraphicsGammaControl": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562648,
            "rva": 368344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570984,
            "rva": 376680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570968,
            "rva": 376664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 110,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_SetGammaRamp"
            },
            "instr_offset": 110,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 469,
          "symbol_index": 469,
          "accessor": "DTTR_PCDOGS_D_D3D_SetGammaRamp_GraphicsGammaControl",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_SET_GAMMA_RAMP_GRAPHICS_GAMMA_CONTROL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_SET_GAMMA_RAMP_GRAPHICS_GAMMA_CONTROL"
        }
      }
    },
    "D3D_SetGammaRamp_NotSupported": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516376,
            "rva": 322072,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524572,
            "rva": 330268,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524572,
            "rva": 330268,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_SetGammaRamp"
            },
            "instr_offset": 89,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 170,
          "symbol_index": 170,
          "accessor": "DTTR_PCDOGS_D_D3D_SetGammaRamp_NotSupported",
          "sdk_id": "DTTR_PCDOGS_DATA_D3D_SET_GAMMA_RAMP_NOT_SUPPORTED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_D3D_SET_GAMMA_RAMP_NOT_SUPPORTED"
        }
      }
    },
    "D3D_SetTextureColorOperation": {
      "function": {
        "analysis": {
          "en": {
            "address": 4280096,
            "rva": 85792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFilledRectangleGradient"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 941,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuad"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuadMaterialSize"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4280576,
            "rva": 86272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFilledRectangleGradient"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 941,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuad"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuadMaterialSize"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4280576,
            "rva": 86272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawFilledRectangleGradient"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 941,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuad"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuadMaterialSize"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "color_operation",
              "type": "int32_t",
              "docs": "D3DTEXTUREOP value for texture stage 0 D3DTSS_COLOROP; known callers pass 1 (disable) or 4 (modulate)."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 A1 ?? ?? ?? ?? 8D",
          "match_offset": 0
        },
        "docs": "Ensures texture stage 0 D3DTSS_COLOROP equals colorOperation on the global IDirect3DDevice7. The routine reads GetTextureStageState(0, 1), compares the current value, and calls SetTextureStageState(0, 1, colorOperation) only when it differs.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 195,
          "symbol_index": 195,
          "accessor": "DTTR_PCDOGS_F_D3D_SetTextureColorOperation",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_SET_TEXTURE_COLOR_OPERATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_SET_TEXTURE_COLOR_OPERATION"
        }
      }
    },
    "D3D_SetZWriteEnable": {
      "function": {
        "analysis": {
          "en": {
            "address": 4283136,
            "rva": 88832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4283632,
            "rva": 89328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4283632,
            "rva": 89328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "enable",
              "type": "BOOL",
              "docs": "Passed to D3DRENDERSTATE_ZWRITEENABLE; callers use 0 then 1 around depth-write-suppressed draws."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? F6 C4 20 74 ?? A1 ?? ?? ?? ?? 8B",
          "match_offset": 0
        },
        "docs": "If the D3D render-state capability flag is set, calls IDirect3DDevice7::SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, enable); otherwise no-ops.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 199,
          "symbol_index": 199,
          "accessor": "DTTR_PCDOGS_F_D3D_SetZWriteEnable",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_D3D_SET_Z_WRITE_ENABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_D3D_SET_Z_WRITE_ENABLE"
        }
      }
    },
    "DDraw_AddDisplayMode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4297120,
            "rva": 102816,
            "image_base": 4194304
          },
          "eu": {
            "address": 4297600,
            "rva": 103296,
            "image_base": 4194304
          },
          "sc": {
            "address": 4297600,
            "rva": 103296,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "surface_desc",
              "type": "void*"
            },
            {
              "name": "enum_context",
              "type": "void*"
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 56 8B 74 24 08 57 8B 88 ?? ?? ?? ?? 8B D1 C1 E2 ??",
          "match_offset": 0
        },
        "docs": "IDirectDraw7::EnumDisplayModes callback that appends each DDSURFACEDESC2 to the driver enumeration context, increments the mode count, and returns TRUE while count is <= 0x4f.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 230,
          "symbol_index": 230,
          "accessor": "DTTR_PCDOGS_F_DDraw_AddDisplayMode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DDRAW_ADD_DISPLAY_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DDRAW_ADD_DISPLAY_MODE"
        }
      }
    },
    "DDraw_CompareDisplayModes": {
      "function": {
        "analysis": {
          "en": {
            "address": 4296480,
            "rva": 102176,
            "image_base": 4194304
          },
          "eu": {
            "address": 4296960,
            "rva": 102656,
            "image_base": 4194304
          },
          "sc": {
            "address": 4296960,
            "rva": 102656,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "left",
              "type": "const void*"
            },
            {
              "name": "right",
              "type": "const void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 54 24 04 56 8B 74 24 0C 8B 42 0C 8B 4E 0C 3B C1 73 ?? 83 C8 FF 5E C3 76 ?? B8 01 00 00 00 5E C3 8B 42 08",
          "match_offset": 0
        },
        "docs": "Qsort comparator for enumerated display modes: sorts by width, then height, then pixel-format RGB bit count using DDSURFACEDESC2 mode fields.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 228,
          "symbol_index": 228,
          "accessor": "DTTR_PCDOGS_F_DDraw_CompareDisplayModes",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DDRAW_COMPARE_DISPLAY_MODES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DDRAW_COMPARE_DISPLAY_MODES"
        }
      }
    },
    "DDraw_CreateEx": {
      "function": {
        "analysis": {
          "en": {
            "address": 4477216,
            "rva": 282912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 521,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4485056,
            "rva": 290752,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484832,
            "rva": 290528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "HRESULT",
          "params": [
            {
              "name": "lp_guid",
              "type": "Win32_GUID*"
            },
            {
              "name": "lplp_dd",
              "type": "void**"
            },
            {
              "name": "iid",
              "type": "Win32_GUID*"
            },
            {
              "name": "p_unk_outer",
              "type": "COM_IUnknown*"
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 25 ?? ?? ?? ?? CC CC CC CC CC CC CC CC CC CC CC CC CC CC ?? ?? ?? ?? 00 00 00 00 03 FF FF 80 00 01 00 00",
          "match_offset": -12
        },
        "docs": "Import entry for ddraw!DirectDrawCreateEx; used by graphics initialization to create the primary DirectDraw7 interface.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 28,
          "symbol_index": 28,
          "accessor": "DTTR_PCDOGS_F_DDraw_CreateEx",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DDRAW_CREATE_EX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DDRAW_CREATE_EX"
        }
      }
    },
    "DDraw_EnumCallbackExA": {
      "type": {
        "ret": "BOOL",
        "params": [
          {
            "type": "Win32_GUID*",
            "name": "guid",
            "doc": null
          },
          {
            "type": "char*",
            "name": "description",
            "doc": null
          },
          {
            "type": "char*",
            "name": "name",
            "doc": null
          },
          {
            "type": "void*",
            "name": "context",
            "doc": null
          },
          {
            "type": "HMONITOR",
            "name": "monitor",
            "doc": null
          }
        ],
        "unstable": false,
        "kind": "function_type_alias",
        "docs": "DirectDrawEnumerateExA callback signature used when enumerating DirectDraw devices.",
        "calling_convention": "CALLBACK",
        "sdk": {
          "name": "DTTR_PCDOGS_T_DDraw_EnumCallbackExA"
        }
      }
    },
    "DDraw_EnumerateCallback": {
      "function": {
        "analysis": {
          "en": {
            "address": 4296704,
            "rva": 102400,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DDraw_EnumerateCallback_D3DErrCreateDuringEnum"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "DDraw_EnumerateCallback_D3DErrQueryDuringEnum"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_CreateEx"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 345,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4297184,
            "rva": 102880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DDraw_EnumerateCallback_D3DErrCreateDuringEnum"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "DDraw_EnumerateCallback_D3DErrQueryDuringEnum"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_CreateEx"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 345,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4297184,
            "rva": 102880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DDraw_EnumerateCallback_D3DErrCreateDuringEnum"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "DDraw_EnumerateCallback_D3DErrQueryDuringEnum"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_CreateEx"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 345,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "guid",
              "type": "Win32_GUID*"
            },
            {
              "name": "driver_name",
              "type": "const char*"
            },
            {
              "name": "driver_description",
              "type": "char*"
            },
            {
              "name": "context",
              "type": "void*"
            },
            {
              "name": "monitor",
              "type": "HMONITOR"
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "DDraw_EnumerateCallback_D3DErrQueryDuringEnum"
            },
            "instr_offset": 86,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "DDraw_EnumerateCallback_D3DErrCreateDuringEnum"
            },
            "instr_offset": 41,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "B8 94 2B 00 00 E8 ??",
          "match_offset": 0
        },
        "docs": "DirectDrawEnumerateExA callback: creates DirectDraw/Direct3D interfaces for a driver, records display modes through DDraw_AddDisplayMode, sorts them with DDraw_CompareDisplayModes, enumerates D3D devices, and returns TRUE to continue enumeration.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 231,
          "symbol_index": 231,
          "accessor": "DTTR_PCDOGS_F_DDraw_EnumerateCallback",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DDRAW_ENUMERATE_CALLBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DDRAW_ENUMERATE_CALLBACK"
        }
      }
    },
    "DDraw_EnumerateCallback_D3DErrCreateDuringEnum": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516596,
            "rva": 322292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524792,
            "rva": 330488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524792,
            "rva": 330488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "DDraw_EnumerateCallback"
            },
            "instr_offset": 41,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 175,
          "symbol_index": 175,
          "accessor": "DTTR_PCDOGS_D_DDraw_EnumerateCallback_D3DErrCreateDuringEnum",
          "sdk_id": "DTTR_PCDOGS_DATA_DDRAW_ENUMERATE_CALLBACK_D3D_ERR_CREATE_DURING_ENUM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DDRAW_ENUMERATE_CALLBACK_D3D_ERR_CREATE_DURING_ENUM"
        }
      }
    },
    "DDraw_EnumerateCallback_D3DErrQueryDuringEnum": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516552,
            "rva": 322248,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524748,
            "rva": 330444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524748,
            "rva": 330444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "DDraw_EnumerateCallback"
            },
            "instr_offset": 86,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 174,
          "symbol_index": 174,
          "accessor": "DTTR_PCDOGS_D_DDraw_EnumerateCallback_D3DErrQueryDuringEnum",
          "sdk_id": "DTTR_PCDOGS_DATA_DDRAW_ENUMERATE_CALLBACK_D3D_ERR_QUERY_DURING_ENUM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DDRAW_ENUMERATE_CALLBACK_D3D_ERR_QUERY_DURING_ENUM"
        }
      }
    },
    "DDraw_EnumerateExA": {
      "function": {
        "analysis": {
          "en": {
            "address": 4477222,
            "rva": 282918,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4485062,
            "rva": 290758,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484838,
            "rva": 290534,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "HRESULT",
          "params": [
            {
              "name": "lp_callback",
              "type": "DDraw_EnumCallbackExA"
            },
            {
              "name": "lp_context",
              "type": "LPVOID"
            },
            {
              "name": "dw_flags",
              "type": "DWORD"
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 25 ?? ?? ?? ?? CC CC CC CC CC CC CC CC CC CC CC CC CC CC ?? ?? ?? ?? 00 00 00 00 03 FF FF 80 00 01 00 00",
          "match_offset": -6
        },
        "docs": "Import entry for ddraw!DirectDrawEnumerateExA; used by D3D_EnumerateDirectDrawDevices with DDraw_EnumerateCallback and enumeration flags.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 29,
          "symbol_index": 29,
          "accessor": "DTTR_PCDOGS_F_DDraw_EnumerateExA",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DDRAW_ENUMERATE_EX_A",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DDRAW_ENUMERATE_EX_A"
        }
      }
    },
    "DDraw_ObjectAnchor": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4290368,
            "rva": 96064,
            "image_base": 4194304
          },
          "eu": {
            "address": 4290832,
            "rva": 96528,
            "image_base": 4194304
          },
          "sc": {
            "address": 4290832,
            "rva": 96528,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "A1 ?? ?? ?? ?? 8B 15 ?? ?? ?? ?? 81 EC 9C 00 00 00"
      }
    },
    "DDraw_UnlockSurface": {
      "function": {
        "analysis": {
          "en": {
            "address": 4295888,
            "rva": 101584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_SaveScreenshot"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4296368,
            "rva": 102064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_SaveScreenshot"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4296368,
            "rva": 102064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_SaveScreenshot"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "surface",
              "type": "DDraw_IDirectDrawSurface7*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 6A 00 50 8B 08 FF 91 80 00 00 00 C3 83 EC 18 53 55 56 57 6A 28 6A 40 FF 15 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 225,
          "symbol_index": 225,
          "accessor": "DTTR_PCDOGS_F_DDraw_UnlockSurface",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DDRAW_UNLOCK_SURFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DDRAW_UNLOCK_SURFACE"
        }
      }
    },
    "DInput_CreateA": {
      "function": {
        "analysis": {
          "en": {
            "address": 4477228,
            "rva": 282924,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateInterface"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4485068,
            "rva": 290764,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateInterface"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484844,
            "rva": 290540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateInterface"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "HRESULT",
          "params": [
            {
              "name": "hinst",
              "type": "HINSTANCE"
            },
            {
              "name": "dw_version",
              "type": "DWORD"
            },
            {
              "name": "pp_di",
              "type": "DInput_IDirectInputA**"
            },
            {
              "name": "p_unk_outer",
              "type": "COM_IUnknown*"
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 25 ?? ?? ?? ?? CC CC CC CC CC CC CC CC CC CC CC",
          "match_offset": 0
        },
        "docs": "Import entry for dinput!DirectInputCreateA; used by DInput_CreateInterface to create the DirectInput 7 interface.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 638,
          "symbol_index": 638,
          "accessor": "DTTR_PCDOGS_F_DInput_CreateA",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_CREATE_A",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_CREATE_A"
        }
      }
    },
    "DInput_CreateConfiguredJoystickDevice": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301872,
            "rva": 107568,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_CreateConfiguredJoystickDevice_ConstantForceEffect"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateDevice2A"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateAttachedJoysticks"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateForceFeedbackJoysticks"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_AcquireDevice"
                },
                "instr_offset": 472,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetExclusiveForegroundCooperativeLevel"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystick2DataFormat"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickDataFormat"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateJoystickDevice"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302352,
            "rva": 108048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_CreateConfiguredJoystickDevice_ConstantForceEffect"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateDevice2A"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateAttachedJoysticks"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateForceFeedbackJoysticks"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_AcquireDevice"
                },
                "instr_offset": 472,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetExclusiveForegroundCooperativeLevel"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystick2DataFormat"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickDataFormat"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateJoystickDevice"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302352,
            "rva": 108048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_CreateConfiguredJoystickDevice_ConstantForceEffect"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateDevice2A"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateAttachedJoysticks"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateForceFeedbackJoysticks"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_AcquireDevice"
                },
                "instr_offset": 472,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetExclusiveForegroundCooperativeLevel"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystick2DataFormat"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickDataFormat"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateJoystickDevice"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "DInput_IDirectInputDevice*",
          "params": [
            {
              "name": "dinput_interface",
              "type": "DInput_IDirectInputA*"
            },
            {
              "name": "hwnd",
              "type": "HWND"
            },
            {
              "name": "device_index",
              "type": "int32_t"
            },
            {
              "name": "setup_mode",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "DInput_CreateConfiguredJoystickDevice_ConstantForceEffect"
            },
            "instr_offset": 370,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 00 57 50 56 E8 ??",
          "match_offset": -16
        },
        "docs": "Enumerates DirectInput joystick GUIDs, creates the selected device, sets joystick or extended data format according to setupMode, sets exclusive foreground cooperative level, optionally creates a constant-force effect, acquires the device, and returns it on success.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 260,
          "symbol_index": 260,
          "accessor": "DTTR_PCDOGS_F_DInput_CreateConfiguredJoystickDevice",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_CREATE_CONFIGURED_JOYSTICK_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_CREATE_CONFIGURED_JOYSTICK_DEVICE"
        }
      }
    },
    "DInput_CreateConfiguredJoystickDevice_ConstantForceEffect": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802584,
            "rva": 608280,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810920,
            "rva": 616616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810904,
            "rva": 616600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "DInput_CreateConfiguredJoystickDevice"
            },
            "instr_offset": 370,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "DInput_CreateConfiguredJoystickDevice",
          "instr_offset": 370,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "DirectInput constant-force effect object returned by IDirectInputDevice::CreateEffect when force feedback is available.",
        "sdk": {
          "id": 477,
          "symbol_index": 477,
          "accessor": "DTTR_PCDOGS_D_DInput_CreateConfiguredJoystickDevice_ConstantForceEffect",
          "sdk_id": "DTTR_PCDOGS_DATA_DINPUT_CREATE_CONFIGURED_JOYSTICK_DEVICE_CONSTANT_FORCE_EFFECT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DINPUT_CREATE_CONFIGURED_JOYSTICK_DEVICE_CONSTANT_FORCE_EFFECT"
        }
      }
    },
    "DInput_CreateDevice2A": {
      "function": {
        "analysis": {
          "en": {
            "address": 4300960,
            "rva": 106656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_QueryDevice2AInterface"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4301440,
            "rva": 107136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_QueryDevice2AInterface"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4301440,
            "rva": 107136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_QueryDevice2AInterface"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "DInput_IDirectInputDevice*",
          "params": [
            {
              "name": "dinput_interface",
              "type": "DInput_IDirectInputA*"
            },
            {
              "name": "device_guid",
              "type": "Win32_GUID",
              "docs": "Native helper receives the GUID by value, then passes its stack address to IDirectInputA::CreateDevice."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 8B F0 8B 44 24 0C 83",
          "match_offset": -39
        },
        "docs": "Receives a DirectInput device GUID by value, calls IDirectInputA::CreateDevice(&deviceGuid, &device, NULL), queries the created device for IDirectInputDevice2A, releases the temporary device, and returns the Device2A interface or NULL on failure.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 239,
          "symbol_index": 239,
          "accessor": "DTTR_PCDOGS_F_DInput_CreateDevice2A",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_CREATE_DEVICE2_A",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_CREATE_DEVICE2_A"
        }
      }
    },
    "DInput_CreateInterface": {
      "function": {
        "analysis": {
          "en": {
            "address": 4300912,
            "rva": 106608,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateA"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4301392,
            "rva": 107088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateA"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4301392,
            "rva": 107088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateA"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "DInput_IDirectInputA*",
          "params": [
            {
              "name": "h_instance",
              "type": "HINSTANCE"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "68 00 07 00 00 51 E8 ??",
          "match_offset": -11
        },
        "docs": "Calls DirectInputCreateA(hInstance, 0x700, &directInput, NULL) and returns the created IDirectInputA pointer on success or NULL on failure.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 238,
          "symbol_index": 238,
          "accessor": "DTTR_PCDOGS_F_DInput_CreateInterface",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_CREATE_INTERFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_CREATE_INTERFACE"
        }
      }
    },
    "DInput_CreateJoystickDevice": {
      "function": {
        "analysis": {
          "en": {
            "address": 4302592,
            "rva": 108288,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4303072,
            "rva": 108768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4303072,
            "rva": 108768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "DInput_IDirectInputDevice*",
          "params": [
            {
              "name": "dinput_interface",
              "type": "DInput_IDirectInputA*"
            },
            {
              "name": "hwnd",
              "type": "HWND"
            },
            {
              "name": "device_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "04 6A 01 50 51 52 E8 ??",
          "match_offset": -11
        },
        "docs": "Creates/configures a DirectInput joystick device through the shared device setup helper, enabling force-feedback setup when supported.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 264,
          "symbol_index": 264,
          "accessor": "DTTR_PCDOGS_F_DInput_CreateJoystickDevice",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_CREATE_JOYSTICK_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_CREATE_JOYSTICK_DEVICE"
        }
      }
    },
    "DInput_Device2AIID": {
      "data": {
        "analysis": {
          "en": {
            "address": 4510088,
            "rva": 315784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_QueryDevice2AInterface"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518320,
            "rva": 324016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_QueryDevice2AInterface"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518320,
            "rva": 324016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_QueryDevice2AInterface"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "DInput_QueryDevice2AInterface"
            },
            "instr_offset": 9,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Win32_GUID",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "DInput_QueryDevice2AInterface",
          "instr_offset": 9,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "IID_IDirectInputDevice2A GUID passed to IDirectInputDevice::QueryInterface.",
        "sdk": {
          "id": 103,
          "symbol_index": 103,
          "accessor": "DTTR_PCDOGS_D_DInput_Device2AIID",
          "sdk_id": "DTTR_PCDOGS_DATA_DINPUT_DEVICE2_AIID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DINPUT_DEVICE2_AIID"
        }
      }
    },
    "DInput_DeviceEnumContext": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "count",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Win32_GUID*",
            "name": "guid_list",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "DirectInput joystick enumeration context for discovered device GUIDs.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_DInput_DeviceEnumContext"
        }
      }
    },
    "DInput_EnumJoystickDeviceCallback": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301184,
            "rva": 106880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_EnumJoystickDeviceCallback_Seen"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4301664,
            "rva": 107360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_EnumJoystickDeviceCallback_Seen"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4301664,
            "rva": 107360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_EnumJoystickDeviceCallback_Seen"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "device_instance",
              "type": "const void*"
            },
            {
              "name": "enum_state",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "DInput_EnumJoystickDeviceCallback_Seen"
            },
            "instr_offset": 63,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "08 B8 01 00 00 00 A3 ??",
          "match_offset": -57
        },
        "docs": "DirectInput EnumDevices callback that copies deviceInstance->guidInstance into enumState, increments the count, marks that a DirectInput device is present, and returns DIENUM_CONTINUE.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 244,
          "symbol_index": 244,
          "accessor": "DTTR_PCDOGS_F_DInput_EnumJoystickDeviceCallback",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_ENUM_JOYSTICK_DEVICE_CALLBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_ENUM_JOYSTICK_DEVICE_CALLBACK"
        }
      }
    },
    "DInput_EnumJoystickDeviceCallback_Seen": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908012,
            "rva": 22713708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_EnumJoystickDeviceCallback"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919276,
            "rva": 22724972,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_EnumJoystickDeviceCallback"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918700,
            "rva": 22724396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_EnumJoystickDeviceCallback"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "DInput_EnumJoystickDeviceCallback"
            },
            "instr_offset": 63,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "DInput_EnumJoystickDeviceCallback",
          "instr_offset": 63,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Set by the DirectInput joystick enumeration callback after copying an enumerated device GUID into the caller-provided list.",
        "sdk": {
          "id": 865,
          "symbol_index": 865,
          "accessor": "DTTR_PCDOGS_D_DInput_EnumJoystickDeviceCallback_Seen",
          "sdk_id": "DTTR_PCDOGS_DATA_DINPUT_ENUM_JOYSTICK_DEVICE_CALLBACK_SEEN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DINPUT_ENUM_JOYSTICK_DEVICE_CALLBACK_SEEN"
        }
      }
    },
    "DInput_EnumerateAttachedJoysticks": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301552,
            "rva": 107248,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302032,
            "rva": 107728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302032,
            "rva": 107728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "dinput_interface",
              "type": "DInput_IDirectInputA*"
            },
            {
              "name": "enum_state_buffer",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0C 6A 01 52 8B 08 68 ??",
          "match_offset": -18
        },
        "docs": "Enumerates attached joysticks via IDirectInputA::EnumDevices(DIDEVTYPE_JOYSTICK, DInput_EnumJoystickDeviceCallback, enumStateBuffer, DIEDFL_ATTACHEDONLY), stores GUID entries, and returns the count.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 250,
          "symbol_index": 250,
          "accessor": "DTTR_PCDOGS_F_DInput_EnumerateAttachedJoysticks",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_ENUMERATE_ATTACHED_JOYSTICKS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_ENUMERATE_ATTACHED_JOYSTICKS"
        }
      }
    },
    "DInput_EnumerateForceFeedbackJoysticks": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301472,
            "rva": 107168,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_EnumerateForceFeedbackJoysticks_Available"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4301952,
            "rva": 107648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_EnumerateForceFeedbackJoysticks_Available"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4301952,
            "rva": 107648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_EnumerateForceFeedbackJoysticks_Available"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "dinput_interface",
              "type": "DInput_IDirectInputA*"
            },
            {
              "name": "enum_state_buffer",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "DInput_EnumerateForceFeedbackJoysticks_Available"
            },
            "instr_offset": 57,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "01 00 00 52 8B 08 68 ??",
          "match_offset": -21
        },
        "docs": "Enumerates attached force-feedback joysticks, stores GUID entries, records whether any device entries are present, and returns the count.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 249,
          "symbol_index": 249,
          "accessor": "DTTR_PCDOGS_F_DInput_EnumerateForceFeedbackJoysticks",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_ENUMERATE_FORCE_FEEDBACK_JOYSTICKS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_ENUMERATE_FORCE_FEEDBACK_JOYSTICKS"
        }
      }
    },
    "DInput_EnumerateForceFeedbackJoysticks_Available": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908004,
            "rva": 22713700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_EnumerateForceFeedbackJoysticks"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919268,
            "rva": 22724964,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_EnumerateForceFeedbackJoysticks"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918692,
            "rva": 22724388,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_EnumerateForceFeedbackJoysticks"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "DInput_EnumerateForceFeedbackJoysticks"
            },
            "instr_offset": 57,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "DInput_EnumerateForceFeedbackJoysticks",
          "instr_offset": 57,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Set to 1 when force-feedback joystick enumeration finds at least one attached device; allows constant-force effect creation and playback.",
        "sdk": {
          "id": 863,
          "symbol_index": 863,
          "accessor": "DTTR_PCDOGS_D_DInput_EnumerateForceFeedbackJoysticks_Available",
          "sdk_id": "DTTR_PCDOGS_DATA_DINPUT_ENUMERATE_FORCE_FEEDBACK_JOYSTICKS_AVAILABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DINPUT_ENUMERATE_FORCE_FEEDBACK_JOYSTICKS_AVAILABLE"
        }
      }
    },
    "DInput_InitializeJoystickInput": {
      "function": {
        "analysis": {
          "en": {
            "address": 4302624,
            "rva": 108320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_InitializeJoystickInput_Device"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_InitializeJoystickInput_Interface"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_InitializeJoystickInput_WindowHandle"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateInterface"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateJoystickDevice"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateAttachedJoysticks"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateForceFeedbackJoysticks"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickRzAxisRange"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickXAxisRange"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickYAxisRange"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickZAxisRange"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4303104,
            "rva": 108800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_InitializeJoystickInput_Device"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_InitializeJoystickInput_Interface"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_InitializeJoystickInput_WindowHandle"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateInterface"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateJoystickDevice"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateAttachedJoysticks"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateForceFeedbackJoysticks"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickRzAxisRange"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickXAxisRange"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickYAxisRange"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickZAxisRange"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4303104,
            "rva": 108800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_InitializeJoystickInput_Device"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_InitializeJoystickInput_Interface"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_InitializeJoystickInput_WindowHandle"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateInterface"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_CreateJoystickDevice"
                },
                "instr_offset": 108,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateAttachedJoysticks"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_EnumerateForceFeedbackJoysticks"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickRzAxisRange"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickXAxisRange"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickYAxisRange"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetJoystickZAxisRange"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "hwnd",
              "type": "HWND"
            },
            {
              "name": "h_instance",
              "type": "HINSTANCE"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "DInput_InitializeJoystickInput_Interface"
            },
            "instr_offset": 28,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "DInput_InitializeJoystickInput_Device"
            },
            "instr_offset": 116,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "DInput_InitializeJoystickInput_WindowHandle"
            },
            "instr_offset": 14,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4C 24 08 8B 44 24 04 81 EC 80 00 00 00 A3 ??",
          "match_offset": 0
        },
        "docs": "Initializes DirectInput joystick support: creates the DirectInput interface, enumerates devices, creates the first joystick, and sets X/Y/Z/Rz axis ranges to -1000..1000.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 265,
          "symbol_index": 265,
          "accessor": "DTTR_PCDOGS_F_DInput_InitializeJoystickInput",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_INITIALIZE_JOYSTICK_INPUT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_INITIALIZE_JOYSTICK_INPUT"
        }
      }
    },
    "DInput_InitializeJoystickInput_Device": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802580,
            "rva": 608276,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810916,
            "rva": 616612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810900,
            "rva": 616596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "DInput_InitializeJoystickInput"
            },
            "instr_offset": 116,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "DInput_IDirectInputDevice*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "DInput_InitializeJoystickInput",
          "instr_offset": 116,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "DirectInput joystick device created by DInput_CreateConfiguredJoystickDevice; acquired, polled, and released by input shutdown.",
        "sdk": {
          "id": 476,
          "symbol_index": 476,
          "accessor": "DTTR_PCDOGS_D_DInput_InitializeJoystickInput_Device",
          "sdk_id": "DTTR_PCDOGS_DATA_DINPUT_INITIALIZE_JOYSTICK_INPUT_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DINPUT_INITIALIZE_JOYSTICK_INPUT_DEVICE"
        }
      }
    },
    "DInput_InitializeJoystickInput_Interface": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802572,
            "rva": 608268,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810908,
            "rva": 616604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810892,
            "rva": 616588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "DInput_InitializeJoystickInput"
            },
            "instr_offset": 28,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "DInput_IDirectInputA*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "DInput_InitializeJoystickInput",
          "instr_offset": 28,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "DirectInput interface created by DInput_CreateInterface; used for joystick enumeration/creation and released by DInput_ReleaseResources.",
        "sdk": {
          "id": 474,
          "symbol_index": 474,
          "accessor": "DTTR_PCDOGS_D_DInput_InitializeJoystickInput_Interface",
          "sdk_id": "DTTR_PCDOGS_DATA_DINPUT_INITIALIZE_JOYSTICK_INPUT_INTERFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DINPUT_INITIALIZE_JOYSTICK_INPUT_INTERFACE"
        }
      }
    },
    "DInput_InitializeJoystickInput_WindowHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908008,
            "rva": 22713704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919272,
            "rva": 22724968,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918696,
            "rva": 22724392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "DInput_InitializeJoystickInput"
            },
            "instr_offset": 14,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "HWND",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "DInput_InitializeJoystickInput",
          "instr_offset": 14,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Main game window handle used by DirectInput cooperative-level setup.",
        "sdk": {
          "id": 864,
          "symbol_index": 864,
          "accessor": "DTTR_PCDOGS_D_DInput_InitializeJoystickInput_WindowHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_DINPUT_INITIALIZE_JOYSTICK_INPUT_WINDOW_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DINPUT_INITIALIZE_JOYSTICK_INPUT_WINDOW_HANDLE"
        }
      }
    },
    "DInput_QueryDevice2AInterface": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301024,
            "rva": 106720,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_Device2AIID"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateDevice2A"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4301504,
            "rva": 107200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_Device2AIID"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateDevice2A"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4301504,
            "rva": 107200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "DInput_Device2AIID"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateDevice2A"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "DInput_IDirectInputDevice*",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "DInput_Device2AIID"
            },
            "instr_offset": 9,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8D 54 24 04 52 68 ??",
          "match_offset": 0
        },
        "docs": "Queries a DirectInput device for IID_IDirectInputDevice2A and returns the interface pointer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 240,
          "symbol_index": 240,
          "accessor": "DTTR_PCDOGS_F_DInput_QueryDevice2AInterface",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_QUERY_DEVICE2_A_INTERFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_QUERY_DEVICE2_A_INTERFACE"
        }
      }
    },
    "DInput_ReleaseResources": {
      "function": {
        "analysis": {
          "en": {
            "address": 4447216,
            "rva": 252912,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4452480,
            "rva": 258176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4452448,
            "rva": 258144,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 56 33 F6 3B C6 74 ?? 50",
          "match_offset": 0
        },
        "docs": "Releases DirectInput/input-owned resources: joystick state buffer, joystick device, DirectInput interface, and keyboard mapping arrays; clears each global after release/free.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 522,
          "symbol_index": 522,
          "accessor": "DTTR_PCDOGS_F_DInput_ReleaseResources",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_RELEASE_RESOURCES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_RELEASE_RESOURCES"
        }
      }
    },
    "DInput_SetConstantForceEffect": {
      "function": {
        "analysis": {
          "en": {
            "address": 4302368,
            "rva": 108064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_One"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302848,
            "rva": 108544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_One"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302848,
            "rva": 108544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_One"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "HRESULT",
          "params": [
            {
              "name": "direction_x",
              "type": "LONG"
            },
            {
              "name": "direction_y",
              "type": "LONG"
            },
            {
              "name": "duration",
              "type": "DWORD"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Math_One"
            },
            "instr_offset": 23,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 83 EC 44",
          "match_offset": 0
        },
        "docs": "Updates the global DirectInput constant-force effect with duration, two-axis direction, and a scaled magnitude, then calls SetParameters with DIEP_START | DIEP_TYPESPECIFICPARAMS | DIEP_DIRECTION | DIEP_DURATION; returns 0 when no effect object is available.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 261,
          "symbol_index": 261,
          "accessor": "DTTR_PCDOGS_F_DInput_SetConstantForceEffect",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_SET_CONSTANT_FORCE_EFFECT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_SET_CONSTANT_FORCE_EFFECT"
        }
      }
    },
    "DInput_StartConstantForceEffect": {
      "function": {
        "analysis": {
          "en": {
            "address": 4302544,
            "rva": 108240,
            "image_base": 4194304
          },
          "eu": {
            "address": 4303024,
            "rva": 108720,
            "image_base": 4194304
          },
          "sc": {
            "address": 4303024,
            "rva": 108720,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? A1 ?? ?? ?? ?? 6A 00 6A 01 50 8B 08 FF 51 1C C3",
          "match_offset": 0
        },
        "docs": "Starts the global DirectInput constant-force effect; returns 0 when no effect object is available.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 262,
          "symbol_index": 262,
          "accessor": "DTTR_PCDOGS_F_DInput_StartConstantForceEffect",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DINPUT_START_CONSTANT_FORCE_EFFECT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DINPUT_START_CONSTANT_FORCE_EFFECT"
        }
      }
    },
    "Debug_Log": {
      "function": {
        "analysis": {
          "en": {
            "address": 4290240,
            "rva": 95936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_Log_File"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_Log_LineFormat"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 369,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 770,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 692,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 779,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 855,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 967,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 297,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 582,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 624,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 700,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 818,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 886,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1061,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1244,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4290704,
            "rva": 96400,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_Log_File"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_Log_LineFormat"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 632,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 369,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 770,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 692,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 779,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 855,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 967,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 297,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 642,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 684,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 760,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 878,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 946,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1133,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1315,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4290704,
            "rva": 96400,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_Log_File"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_Log_LineFormat"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 632,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 369,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 770,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_EnumerateDirectDrawDevices"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 692,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 779,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 855,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 967,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_SetGammaRamp"
                },
                "instr_offset": 297,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 642,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 684,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 760,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 878,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 946,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1133,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1315,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "message",
              "type": "char const*"
            },
            {
              "name": "prefix",
              "type": "char const*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Debug_Log_LineFormat"
            },
            "instr_offset": 18,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Debug_Log_File"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? 8B 44 24 08",
          "match_offset": 0
        },
        "docs": "Writes prefix, then message, as separate newline-terminated strings to the debug log file when open; NULL arguments are skipped.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 208,
          "symbol_index": 208,
          "accessor": "DTTR_PCDOGS_F_Debug_Log",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DEBUG_LOG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DEBUG_LOG"
        }
      }
    },
    "Debug_Log_File": {
      "data": {
        "analysis": {
          "en": {
            "address": 27829992,
            "rva": 23635688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841256,
            "rva": 23646952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840680,
            "rva": 23646376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Debug_Log"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 915,
          "symbol_index": 915,
          "accessor": "DTTR_PCDOGS_D_Debug_Log_File",
          "sdk_id": "DTTR_PCDOGS_DATA_DEBUG_LOG_FILE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DEBUG_LOG_FILE"
        }
      }
    },
    "Debug_Log_LineFormat": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515516,
            "rva": 321212,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523708,
            "rva": 329404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523708,
            "rva": 329404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Debug_Log"
            },
            "instr_offset": 18,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "char[4]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Debug_Log",
          "instr_offset": 18,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Debug-log line format string \"%s\\n\" used before writing the formatted message.",
        "sdk": {
          "id": 141,
          "symbol_index": 141,
          "accessor": "DTTR_PCDOGS_D_Debug_Log_LineFormat",
          "sdk_id": "DTTR_PCDOGS_DATA_DEBUG_LOG_LINE_FORMAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DEBUG_LOG_LINE_FORMAT"
        }
      }
    },
    "Debug_RenderOverlay": {
      "function": {
        "analysis": {
          "en": {
            "address": 4443936,
            "rva": 249632,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_RenderOverlay_CurrentFPS"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_RenderOverlay_FPSFormat"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_RenderOverlay_PosFormat"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4449184,
            "rva": 254880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_RenderOverlay_CurrentFPS"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_RenderOverlay_FPSFormat"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_RenderOverlay_PosFormat"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4449152,
            "rva": 254848,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_RenderOverlay_CurrentFPS"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_RenderOverlay_FPSFormat"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Debug_RenderOverlay_PosFormat"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Debug_RenderOverlay_FPSFormat"
            },
            "instr_offset": 163,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Debug_RenderOverlay_PosFormat"
            },
            "instr_offset": 117,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Debug_RenderOverlay_CurrentFPS"
            },
            "instr_offset": 147,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "81 EC 0C 01 00 00 8B 0D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 511,
          "symbol_index": 511,
          "accessor": "DTTR_PCDOGS_F_Debug_RenderOverlay",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DEBUG_RENDER_OVERLAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DEBUG_RENDER_OVERLAY"
        }
      }
    },
    "Debug_RenderOverlay_CurrentFPS": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835928,
            "rva": 641624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844824,
            "rva": 650520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844808,
            "rva": 650504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Debug_RenderOverlay"
            },
            "instr_offset": 147,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "float",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Debug_RenderOverlay",
          "instr_offset": 147,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Frames-per-second value rendered by the debug overlay after Graphics_RenderFrame updates the accumulator.",
        "sdk": {
          "id": 685,
          "symbol_index": 685,
          "accessor": "DTTR_PCDOGS_D_Debug_RenderOverlay_CurrentFPS",
          "sdk_id": "DTTR_PCDOGS_DATA_DEBUG_RENDER_OVERLAY_CURRENT_FPS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DEBUG_RENDER_OVERLAY_CURRENT_FPS"
        }
      }
    },
    "Debug_RenderOverlay_FPSFormat": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526772,
            "rva": 332468,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534968,
            "rva": 340664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534968,
            "rva": 340664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Debug_RenderOverlay"
            },
            "instr_offset": 163,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 268,
          "symbol_index": 268,
          "accessor": "DTTR_PCDOGS_D_Debug_RenderOverlay_FPSFormat",
          "sdk_id": "DTTR_PCDOGS_DATA_DEBUG_RENDER_OVERLAY_FPS_FORMAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DEBUG_RENDER_OVERLAY_FPS_FORMAT"
        }
      }
    },
    "Debug_RenderOverlay_PosFormat": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526784,
            "rva": 332480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534980,
            "rva": 340676,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534980,
            "rva": 340676,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Debug_RenderOverlay"
            },
            "instr_offset": 117,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 269,
          "symbol_index": 269,
          "accessor": "DTTR_PCDOGS_D_Debug_RenderOverlay_PosFormat",
          "sdk_id": "DTTR_PCDOGS_DATA_DEBUG_RENDER_OVERLAY_POS_FORMAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DEBUG_RENDER_OVERLAY_POS_FORMAT"
        }
      }
    },
    "Debug_RunNoOpStub": {
      "function": {
        "analysis": {
          "en": {
            "address": 4470656,
            "rva": 276352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 522,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 691,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 2043,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 939,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 850,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4477872,
            "rva": 283568,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 974,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 1004,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 522,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 691,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 2043,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 939,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 850,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4477808,
            "rva": 283504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 522,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 691,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 2043,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 939,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 850,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": false,
        "resolver": {
          "kind": "aob",
          "pattern": "C3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 8B 44 24 04 A3 ?? ?? ?? ??",
          "match_offset": 0
        },
        "docs": "Unsupported nullsub/no-op target: single RET, no meaningful return value.",
        "hook": {
          "kind": "unsupported",
          "patch_size": 0,
          "entry_patch_size": 0
        },
        "sdk": {
          "id": 706,
          "symbol_index": 706,
          "accessor": "DTTR_PCDOGS_F_Debug_RunNoOpStub",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DEBUG_RUN_NO_OP_STUB",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DEBUG_RUN_NO_OP_STUB"
        }
      }
    },
    "Display_CurrentWindowHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439212,
            "rva": 2244908,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_IsActive"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Display_ReleaseMode"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449444,
            "rva": 2255140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_IsActive"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Display_ReleaseMode"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6448868,
            "rva": 2254564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_IsActive"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Display_ReleaseMode"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Display_IsActive"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Display_SetMode"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Display_ReleaseMode"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "engine_managed",
        "docs": "Current HWND bound to the active display/D3D mode; checked by Display_IsActive, written by Display_SetMode, and tested before Display_ReleaseMode cleanup.",
        "sdk": {
          "id": 729,
          "symbol_index": 729,
          "accessor": "DTTR_PCDOGS_D_Display_CurrentWindowHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_DISPLAY_CURRENT_WINDOW_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_DISPLAY_CURRENT_WINDOW_HANDLE"
        }
      }
    },
    "Display_IsActive": {
      "function": {
        "analysis": {
          "en": {
            "address": 4477072,
            "rva": 282768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Display_CurrentWindowHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 610,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484912,
            "rva": 290608,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Display_CurrentWindowHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484688,
            "rva": 290384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Display_CurrentWindowHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Display_CurrentWindowHandle"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 33 C0 85 C9 0F 95",
          "match_offset": 0
        },
        "docs": "Returns TRUE when Display_CurrentWindowHandle is non-null, meaning a display/D3D mode is currently bound to a game window.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 635,
          "symbol_index": 635,
          "accessor": "DTTR_PCDOGS_F_Display_IsActive",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DISPLAY_IS_ACTIVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DISPLAY_IS_ACTIVE"
        }
      }
    },
    "Display_ReleaseMode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4477152,
            "rva": 282848,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Display_CurrentWindowHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ReleaseAllAndReportLeaks"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484992,
            "rva": 290688,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Display_CurrentWindowHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ReleaseAllAndReportLeaks"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484768,
            "rva": 290464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Display_CurrentWindowHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ReleaseAllAndReportLeaks"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Display_CurrentWindowHandle"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? 50 E8 ?? ?? ?? ?? 59 C3 90 90 90 90 90 90 90",
          "match_offset": 0
        },
        "docs": "Releases the active display/D3D mode when Display_CurrentWindowHandle is set.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 636,
          "symbol_index": 636,
          "accessor": "DTTR_PCDOGS_F_Display_ReleaseMode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DISPLAY_RELEASE_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DISPLAY_RELEASE_MODE"
        }
      }
    },
    "Display_SetMode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4477088,
            "rva": 282784,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Display_CurrentWindowHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ResetState"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 545,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484928,
            "rva": 290624,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Display_CurrentWindowHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ResetState"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 554,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484704,
            "rva": 290400,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Display_CurrentWindowHandle"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ResetState"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 554,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "hwnd",
              "type": "HWND",
              "docs": "Game window handle to bind to the active display/D3D mode."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Display_CurrentWindowHandle"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 56 57 8B 7C",
          "match_offset": 0
        },
        "docs": "Initializes or reuses the active display/D3D mode for hwnd, stores Display_CurrentWindowHandle on success, and resets input state.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 27,
          "symbol_index": 27,
          "accessor": "DTTR_PCDOGS_F_Display_SetMode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_DISPLAY_SET_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_DISPLAY_SET_MODE"
        }
      }
    },
    "Display_SetMode_Anchor": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4477088,
            "rva": 282784,
            "image_base": 4194304
          },
          "eu": {
            "address": 4484928,
            "rva": 290624,
            "image_base": 4194304
          },
          "sc": {
            "address": 4484704,
            "rva": 290400,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "A1 ?? ?? ?? ?? 56 57 8B 7C 24",
        "docs": "Signature anchor for Display_SetMode, the HWND display-mode initializer."
      }
    },
    "EntityNavigationWorkListBuffer": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "active_count",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Entity_State*",
            "name": "active_entities[4]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "nav_command_count",
            "offset": 20,
            "doc": null
          },
          {
            "type": "Nav_Command",
            "name": "nav_commands[100]",
            "offset": 24,
            "doc": null
          }
        ],
        "size": 2424,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Dual-view work buffer: this layout is the nav view (count + 4 entity slots + nav commands at +0x18, stride 0x18); entity loops also treat the whole buffer as a flat count + Entity_State*[0x25d] array and can exceed the 4 slots.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_EntityNavigationWorkListBuffer"
        }
      }
    },
    "EntityNavigationWorkList_ActiveBufferPtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4545840,
            "rva": 351536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2157,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554176,
            "rva": 359872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2157,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554160,
            "rva": 359856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2157,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Entity_UpdateVisibilityAndSpawn"
            },
            "instr_offset": 232,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Camera_UpdateFollow"
            },
            "instr_offset": 2157,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "engine_managed",
        "docs": "Active entity/navigation work buffer pointer cell. The selected buffer stores an entity pointer count/list and navigation command records used by Entity_GetActiveActorFromList and Actor_TracePath.",
        "sdk": {
          "id": 327,
          "symbol_index": 327,
          "accessor": "DTTR_PCDOGS_D_EntityNavigationWorkList_ActiveBufferPtr",
          "sdk_id": "DTTR_PCDOGS_DATA_ENTITY_NAVIGATION_WORK_LIST_ACTIVE_BUFFER_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ENTITY_NAVIGATION_WORK_LIST_ACTIVE_BUFFER_PTR"
        }
      }
    },
    "EntityNavigationWorkList_BackingBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4546264,
            "rva": 351960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2162,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554600,
            "rva": 360296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2162,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554584,
            "rva": 360280,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2162,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_UpdateFollow"
            },
            "instr_offset": 2162,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "engine_managed",
        "docs": "Entity/navigation work-list backing buffer. Camera_UpdateFollow alternates it with the peer backing buffer, while the active/staging pointer cells name the current roles.",
        "sdk": {
          "id": 341,
          "symbol_index": 341,
          "accessor": "DTTR_PCDOGS_D_EntityNavigationWorkList_BackingBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_ENTITY_NAVIGATION_WORK_LIST_BACKING_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ENTITY_NAVIGATION_WORK_LIST_BACKING_BUFFER"
        }
      }
    },
    "EntityNavigationWorkList_StagingBufferPtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4545852,
            "rva": 351548,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554188,
            "rva": 359884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554172,
            "rva": 359868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_UpdateFollow"
            },
            "instr_offset": 2147,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "engine_managed",
        "docs": "Staging entity/navigation work buffer pointer cell. Camera_UpdateFollow rebuilds this buffer, while Nav_AddCommand appends command records through the same pointer before the buffer is swapped active.",
        "sdk": {
          "id": 330,
          "symbol_index": 330,
          "accessor": "DTTR_PCDOGS_D_EntityNavigationWorkList_StagingBufferPtr",
          "sdk_id": "DTTR_PCDOGS_DATA_ENTITY_NAVIGATION_WORK_LIST_STAGING_BUFFER_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ENTITY_NAVIGATION_WORK_LIST_STAGING_BUFFER_PTR"
        }
      }
    },
    "Entity_DestroyActor": {
      "function": {
        "analysis": {
          "en": {
            "address": 4218496,
            "rva": 24192,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRemoveActor"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRemoveActor"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4218944,
            "rva": 24640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 631,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRemoveActor"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRemoveActor"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4218944,
            "rva": 24640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 631,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRemoveActor"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRemoveActor"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t",
          "params": [
            {
              "name": "entity",
              "type": "Entity_State*",
              "docs": "Entity slot whose active_actor is detached and cleared."
            },
            {
              "name": "restore_defaults",
              "type": "uint32_t",
              "docs": "Nonzero restores default collision radius/height and default flags with bit 0x800 set after teardown."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 53 50 6A FE E8 ??",
          "match_offset": -23
        },
        "docs": "Tears down an entity slot's active actor state. It detaches or marks any linked actor, clears attachment and script entity-slot fields, resets component/record links, and optionally restores default collision state when restore_defaults is nonzero.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 71,
          "symbol_index": 71,
          "accessor": "DTTR_PCDOGS_F_Entity_DestroyActor",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ENTITY_DESTROY_ACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ENTITY_DESTROY_ACTOR"
        }
      }
    },
    "Entity_GetActiveActorFromList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4232544,
            "rva": 38240,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_GetPlayerLevelInfo"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_CollectPowerup"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4233008,
            "rva": 38704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_GetPlayerLevelInfo"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_CollectPowerup"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4233008,
            "rva": 38704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_GetPlayerLevelInfo"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_CollectPowerup"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 15 ?? ?? ?? ?? 85 D2 74 42 66 83 7A 0A 00 76 3B",
          "match_offset": 0
        },
        "docs": "Returns the active actor from the current level entity slots.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 84,
          "symbol_index": 84,
          "accessor": "DTTR_PCDOGS_F_Entity_GetActiveActorFromList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ENTITY_GET_ACTIVE_ACTOR_FROM_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ENTITY_GET_ACTIVE_ACTOR_FROM_LIST"
        }
      }
    },
    "Entity_GetOrSpawnCameraActor": {
      "function": {
        "analysis": {
          "en": {
            "address": 4263824,
            "rva": 69520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEnsureCameraActive"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunWithActor"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4264304,
            "rva": 70000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEnsureCameraActive"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunWithActor"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4264304,
            "rva": 70000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEnsureCameraActive"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunWithActor"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "source_entity",
              "type": "Entity_State*",
              "docs": "Source entity whose active actor pointer is returned or spawned when camera activation requires it."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 04 00 00 74 ?? 80 ??",
          "match_offset": -26
        },
        "docs": "Ensures a source entity has an active actor for script/camera activation paths. Existing active actors are returned directly; otherwise the function toggles the source entity activation bits and calls Entity_SpawnActor(source_entity), returning null when the entity is already marked active without an actor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 150,
          "symbol_index": 150,
          "accessor": "DTTR_PCDOGS_F_Entity_GetOrSpawnCameraActor",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ENTITY_GET_OR_SPAWN_CAMERA_ACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ENTITY_GET_OR_SPAWN_CAMERA_ACTOR"
        }
      }
    },
    "Entity_IsInActiveList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4216928,
            "rva": 22624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 394,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 424,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2454,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4217376,
            "rva": 23072,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 394,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 424,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2454,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4217376,
            "rva": 23072,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 394,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 424,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2454,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "entity_index_one_based",
              "type": "int32_t",
              "docs": "1-based entity index checked against the current level entity table."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8B 0D ?? ?? ?? ?? 48",
          "match_offset": 0
        },
        "docs": "Returns 1 when entity_index_one_based is present in the active entity work list. The function converts the 1-based index to an entity-slot pointer and compares it against the active-entity pointer list populated by Camera_UpdateFollow.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 65,
          "symbol_index": 65,
          "accessor": "DTTR_PCDOGS_F_Entity_IsInActiveList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ENTITY_IS_IN_ACTIVE_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ENTITY_IS_IN_ACTIVE_LIST"
        }
      }
    },
    "Entity_SetActorProperty": {
      "function": {
        "analysis": {
          "en": {
            "address": 4217168,
            "rva": 22864,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Entity_SetActorProperty_IDDispatchTable"
                },
                "instr_offset": 62,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CopyEntityDefaultsToRecord"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpClearActorProperty"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetActorProperty"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTraceActorPath"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4217616,
            "rva": 23312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Entity_SetActorProperty_IDDispatchTable"
                },
                "instr_offset": 62,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CopyEntityDefaultsToRecord"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpClearActorProperty"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetActorProperty"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTraceActorPath"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4217616,
            "rva": 23312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Entity_SetActorProperty_IDDispatchTable"
                },
                "instr_offset": 62,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CopyEntityDefaultsToRecord"
                },
                "instr_offset": 680,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpClearActorProperty"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetActorProperty"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTraceActorPath"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "entity",
              "type": "Entity_State*",
              "docs": "Entity-slot input; the routine bridges through the active actor/record link before writing actor property/default fields."
            },
            {
              "name": "prop_id",
              "type": "Actor_PropID"
            },
            {
              "name": "value",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Entity_SetActorProperty_IDDispatchTable"
            },
            "instr_offset": 62,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 83 F9 09 0F 87 ??",
          "match_offset": -51
        },
        "docs": "Applies a property update through entity and active-actor state. Callers ignore the residual register value; no public pointer return is modeled.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 67,
          "symbol_index": 67,
          "accessor": "DTTR_PCDOGS_F_Entity_SetActorProperty",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ENTITY_SET_ACTOR_PROPERTY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ENTITY_SET_ACTOR_PROPERTY"
        }
      },
      "signature": {
        "analysis": {
          "en": {
            "address": 4217219,
            "rva": 22915,
            "image_base": 4194304
          },
          "eu": {
            "address": 4217667,
            "rva": 23363,
            "image_base": 4194304
          },
          "sc": {
            "address": 4217667,
            "rva": 23363,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "00 00 83 F9 09 0F 87 ??"
      }
    },
    "Entity_SetActorProperty_IDDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4217880,
            "rva": 23576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 62,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4218328,
            "rva": 24024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 62,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4218328,
            "rva": 24024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 62,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Entity_SetActorProperty"
            },
            "instr_offset": 62,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Entity_SetActorProperty",
          "instr_offset": 62,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Ten-entry uint32_t jump table used by Entity_SetActorProperty for property ids 0..9.",
        "sdk": {
          "id": 21,
          "symbol_index": 21,
          "accessor": "DTTR_PCDOGS_D_Entity_SetActorProperty_IDDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_ENTITY_SET_ACTOR_PROPERTY_ID_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_ENTITY_SET_ACTOR_PROPERTY_ID_DISPATCH_TABLE"
        }
      }
    },
    "Entity_SpawnActor": {
      "function": {
        "analysis": {
          "en": {
            "address": 4217936,
            "rva": 23632,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 396,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckShadowRequirement"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCountThunk"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_GetOrSpawnCameraActor"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4218384,
            "rva": 24080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 396,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckShadowRequirement"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCountThunk"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_GetOrSpawnCameraActor"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4218384,
            "rva": 24080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ApplyEntitySlotFlags"
                },
                "instr_offset": 396,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckShadowRequirement"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCountThunk"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_GetOrSpawnCameraActor"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "source_entity",
              "type": "Entity_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8D 73 58 85 C0 0F 85 ??",
          "match_offset": -15
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 69,
          "symbol_index": 69,
          "accessor": "DTTR_PCDOGS_F_Entity_SpawnActor",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ENTITY_SPAWN_ACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ENTITY_SPAWN_ACTOR"
        }
      }
    },
    "Entity_State": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "bonus_respawn_pos",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_radius_sq",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "collision_height_sq",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "active_flag",
            "offset": 24,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "bonus_respawn_mode",
            "offset": 25,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "reserved_1A",
            "offset": 26,
            "doc": null
          },
          {
            "type": "Math_Vec3I32*",
            "name": "bonus_respawn_target_pos",
            "offset": 28,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "attach_offset_x",
            "offset": 32,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "default_anim_state",
            "offset": 34,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "local_vars[9]",
            "offset": 36,
            "doc": null
          },
          {
            "type": "void*",
            "name": "script_base_ptr",
            "offset": 72,
            "doc": null
          },
          {
            "type": "void*",
            "name": "actor_template_header_ref",
            "offset": 76,
            "doc": null
          },
          {
            "type": "void*",
            "name": "shared_ref_50",
            "offset": 80,
            "doc": null
          },
          {
            "type": "void*",
            "name": "shared_ref_54",
            "offset": 84,
            "doc": null
          },
          {
            "type": "Math_Vec3I32*",
            "name": "runtime_target_pos",
            "offset": 88,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_5C[44]",
            "offset": 92,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "respawn_transition_speed",
            "offset": 136,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_8C[52]",
            "offset": 140,
            "doc": null
          },
          {
            "type": "Math_Vec3I32*",
            "name": "position_ptr",
            "offset": 192,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_gravity_friction",
            "offset": 196,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_c8",
            "offset": 200,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_cc",
            "offset": 204,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_max_speed_0",
            "offset": 208,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_max_speed_1",
            "offset": 212,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_accel_0",
            "offset": 216,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_max_speed_2",
            "offset": 220,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_accel_1",
            "offset": 224,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_accel_2",
            "offset": 228,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_accel_3",
            "offset": 232,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_accel_4",
            "offset": 236,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_f0",
            "offset": 240,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_turn_step",
            "offset": 244,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_mass",
            "offset": 248,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_fc",
            "offset": 252,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "param_jump_frames",
            "offset": 256,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "param_jump_strength",
            "offset": 257,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "param_direction_mode",
            "offset": 258,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "param_pad_103",
            "offset": 259,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_max_health",
            "offset": 260,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_108",
            "offset": 264,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_10c",
            "offset": 268,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_110",
            "offset": 272,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_114",
            "offset": 276,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_118",
            "offset": 280,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_11c",
            "offset": 284,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_120",
            "offset": 288,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "param_124",
            "offset": 292,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "runtime_actor",
            "offset": 296,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "team_bitmask[16]",
            "offset": 300,
            "doc": "Per-team membership/relation bitmask bytes."
          },
          {
            "type": "int32_t",
            "name": "script_timer",
            "offset": 316,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "behavior_index",
            "offset": 320,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "behavior_stack[3]",
            "offset": 321,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_144[40]",
            "offset": 324,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "target_offset_phase",
            "offset": 364,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "target_offset_step",
            "offset": 368,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "saved_collision_radius_sq",
            "offset": 372,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "saved_collision_height_sq",
            "offset": 376,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "saved_flags",
            "offset": 380,
            "doc": null
          }
        ],
        "size": 384,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Entity_State"
        }
      }
    },
    "Entity_UpdateVisibilityAndSpawn": {
      "function": {
        "analysis": {
          "en": {
            "address": 4222288,
            "rva": 27984,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_ActiveBufferPtr"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 887,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunWithActor"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4222752,
            "rva": 28448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_ActiveBufferPtr"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 887,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunWithActor"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4222752,
            "rva": 28448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "EntityNavigationWorkList_ActiveBufferPtr"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateTimers"
                },
                "instr_offset": 887,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 778,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunWithActor"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "source_entity",
              "type": "Entity_State*"
            },
            {
              "name": "force_visibility_override",
              "type": "BOOL",
              "docs": "Nonzero bypasses the initial Graphics_CheckFrustumCull gate for an entity already marked with the 0x4000 visibility/culled flag. Camera_UpdateFollow passes 0 for normal visibility evaluation; Script_OpRunWithActor passes the current entity pointer as a nonzero token."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "EntityNavigationWorkList_ActiveBufferPtr"
            },
            "instr_offset": 232,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "40 01 00 00 51 50 E8 ??",
          "match_offset": -75
        },
        "docs": "Updates level-local Entity_State visibility and spawn state, active actor ownership, and active entity work-list membership.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 76,
          "symbol_index": 76,
          "accessor": "DTTR_PCDOGS_F_Entity_UpdateVisibilityAndSpawn",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_ENTITY_UPDATE_VISIBILITY_AND_SPAWN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_ENTITY_UPDATE_VISIBILITY_AND_SPAWN"
        }
      }
    },
    "Exception_IsAccessViolationFilter": {
      "function": {
        "analysis": {
          "en": {
            "address": 4488937,
            "rva": 294633,
            "image_base": 4194304
          },
          "eu": {
            "address": 4496777,
            "rva": 302473,
            "image_base": 4194304
          },
          "sc": {
            "address": 4496553,
            "rva": 302249,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "exception_frame",
              "type": "void*",
              "docs": "Implicit EBP-framed SEH filter state containing exception pointers at -0x14 ."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": false,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 45 EC 8B 00 8B 00 33 C9 3D 05 00 00 C0 0F 94 C1 8B C1 C3 8B 65 E8 ??",
          "match_offset": 0
        },
        "docs": "Non-normal-callable SEH filter fragment inside _rt_probe_read4; returns true when the exception code is 0xC0000005 (access violation).",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 687,
          "symbol_index": 687,
          "accessor": "DTTR_PCDOGS_F_Exception_IsAccessViolationFilter",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_EXCEPTION_IS_ACCESS_VIOLATION_FILTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_EXCEPTION_IS_ACCESS_VIOLATION_FILTER"
        }
      }
    },
    "Exception_RtlUnwindThunk": {
      "function": {
        "analysis": {
          "en": {
            "address": 4508928,
            "rva": 314624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4516768,
            "rva": 322464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4516544,
            "rva": 322240,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 25 ?? ?? ?? ?? CC CC CC CC CC CC CC CC CC CC 55",
          "match_offset": 0
        },
        "docs": "Import entry for RtlUnwind used by the CRT/SEH exception path.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 699,
          "symbol_index": 699,
          "accessor": "DTTR_PCDOGS_F_Exception_RtlUnwindThunk",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_EXCEPTION_RTL_UNWIND_THUNK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_EXCEPTION_RTL_UNWIND_THUNK"
        }
      }
    },
    "File_AllocateBuffer": {
      "function": {
        "analysis": {
          "en": {
            "address": 4489499,
            "rva": 295195,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4497339,
            "rva": 303035,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4497115,
            "rva": 302811,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "stream",
              "type": "File_Handle*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 FF 76 10 E8 ??",
          "match_offset": 0
        },
        "docs": "Allocates or assigns a buffered I/O area for stdout/stderr-like streams; returns 1 when a buffer is installed, otherwise 0.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 690,
          "symbol_index": 690,
          "accessor": "DTTR_PCDOGS_F_File_AllocateBuffer",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_ALLOCATE_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_ALLOCATE_BUFFER"
        }
      }
    },
    "File_Close": {
      "function": {
        "analysis": {
          "en": {
            "address": 4481743,
            "rva": 287439,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_Close"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 344,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ReadGameFile"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_WriteGameFile"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4489583,
            "rva": 295279,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_Close"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 577,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4489359,
            "rva": 295055,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_Close"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 417,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 577,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "stream",
              "type": "File_Handle*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? A8 83 74 ?? 56 E8 ??",
          "match_offset": -20
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 667,
          "symbol_index": 667,
          "accessor": "DTTR_PCDOGS_F_File_Close",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_CLOSE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_CLOSE"
        }
      }
    },
    "File_CloseHandle": {
      "function": {
        "analysis": {
          "en": {
            "address": 4489701,
            "rva": 295397,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FindHeapBlockByAddress"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 810,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 3455,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4497541,
            "rva": 303237,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FindHeapBlockByAddress"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 810,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 3455,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4497317,
            "rva": 303013,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FindHeapBlockByAddress"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 810,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 3455,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "file_no",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 55 56 57 8B 7C 24 14 3B 3D ??",
          "match_offset": 0
        },
        "docs": "Closes the OS handle associated with a CRT file descriptor and clears its descriptor-table flags; returns 0 on success or -1 on failure.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 692,
          "symbol_index": 692,
          "accessor": "DTTR_PCDOGS_F_File_CloseHandle",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_CLOSE_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_CLOSE_HANDLE"
        }
      }
    },
    "File_DirectoryAnchor": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4452007,
            "rva": 257703,
            "image_base": 4194304
          },
          "eu": {
            "address": 4457564,
            "rva": 263260,
            "image_base": 4194304
          },
          "sc": {
            "address": 4457532,
            "rva": 263228,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "68 ?? ?? ?? ?? 68 04 01 00 00 FF 15"
      }
    },
    "File_FlushAndClear": {
      "function": {
        "analysis": {
          "en": {
            "address": 4489640,
            "rva": 295336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4497480,
            "rva": 303176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4497256,
            "rva": 302952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "clear_buffer",
              "type": "int32_t"
            },
            {
              "name": "stream",
              "type": "File_Handle*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "46 0D 10 74 ?? 56 E8 ??",
          "match_offset": -13
        },
        "docs": "Flushes a buffered stream when needed; when clearBuffer is nonzero, also clears the stream buffer pointers and count.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 691,
          "symbol_index": 691,
          "accessor": "DTTR_PCDOGS_F_File_FlushAndClear",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_FLUSH_AND_CLEAR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_FLUSH_AND_CLEAR"
        }
      }
    },
    "File_FlushBuffer": {
      "function": {
        "analysis": {
          "en": {
            "address": 4481434,
            "rva": 287130,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_AllocateBuffer"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_AllocateBuffer"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_SeekAndGetPosition"
                },
                "instr_offset": 399,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4489274,
            "rva": 294970,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_AllocateBuffer"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_AllocateBuffer"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_SeekAndGetPosition"
                },
                "instr_offset": 399,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4489050,
            "rva": 294746,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_AllocateBuffer"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_AllocateBuffer"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushAndClear"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_SeekAndGetPosition"
                },
                "instr_offset": 399,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "stream",
              "type": "File_Handle*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 57 50 FF 76 10 E8 ??",
          "match_offset": -38
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 666,
          "symbol_index": 666,
          "accessor": "DTTR_PCDOGS_F_File_FlushBuffer",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_FLUSH_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_FLUSH_BUFFER"
        }
      }
    },
    "File_FlushToDisk": {
      "function": {
        "analysis": {
          "en": {
            "address": 4488983,
            "rva": 294679,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "File_FlushToDisk_IoBufferHighWaterMark"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 432,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4496823,
            "rva": 302519,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "File_FlushToDisk_IoBufferHighWaterMark"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 432,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4496599,
            "rva": 302295,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "File_FlushToDisk_IoBufferHighWaterMark"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 432,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "file_no",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "File_FlushToDisk_IoBufferHighWaterMark"
            },
            "instr_offset": 4,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 3B 05 ?? ?? ?? ?? 73 ?? 8B C8 8B",
          "match_offset": 0
        },
        "docs": "Flushes the OS handle for a CRT file descriptor with FlushFileBuffers; returns 0 on success and -1 on invalid descriptor or Win32 failure.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 688,
          "symbol_index": 688,
          "accessor": "DTTR_PCDOGS_F_File_FlushToDisk",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_FLUSH_TO_DISK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_FLUSH_TO_DISK"
        }
      }
    },
    "File_FlushToDisk_IoBufferHighWaterMark": {
      "data": {
        "analysis": {
          "en": {
            "address": 27832640,
            "rva": 23638336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushToDisk"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843904,
            "rva": 23649600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushToDisk"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27843328,
            "rva": 23649024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushToDisk"
                },
                "instr_offset": 4,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "File_FlushToDisk"
            },
            "instr_offset": 4,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 972,
          "symbol_index": 972,
          "accessor": "DTTR_PCDOGS_D_File_FlushToDisk_IoBufferHighWaterMark",
          "sdk_id": "DTTR_PCDOGS_DATA_FILE_FLUSH_TO_DISK_IO_BUFFER_HIGH_WATER_MARK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_FILE_FLUSH_TO_DISK_IO_BUFFER_HIGH_WATER_MARK"
        }
      }
    },
    "File_Handle": {
      "type": {
        "members": [
          {
            "type": "char*",
            "name": "ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "cnt",
            "offset": 4,
            "doc": null
          },
          {
            "type": "char*",
            "name": "base",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "flag",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "file",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "charbuf",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "bufsiz",
            "offset": 24,
            "doc": null
          },
          {
            "type": "char*",
            "name": "tmpfname",
            "offset": 28,
            "doc": null
          }
        ],
        "size": 32,
        "incomplete": true,
        "unstable": false,
        "kind": "struct",
        "docs": "CRT-compatible file handle layout, used by package and asset loading streams.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_File_Handle"
        }
      }
    },
    "File_Open": {
      "function": {
        "analysis": {
          "en": {
            "address": 4482035,
            "rva": 287731,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_OpenWithMode"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 258,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ReadGameFile"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_WriteGameFile"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4489875,
            "rva": 295571,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_OpenWithMode"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 261,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 323,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 538,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4489651,
            "rva": 295347,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_OpenWithMode"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadFromINI"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_CloseDebugLog"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 329,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 538,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "File_Handle*",
          "params": [
            {
              "name": "filename",
              "type": "char const*"
            },
            {
              "name": "mode",
              "type": "char const*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0C FF 74 24 0C E8 ?? ?? ?? ?? 83 C4 0C C3 55 8B EC 81 EC F8 00 00 00 53 56 8B 75",
          "match_offset": -5
        },
        "docs": "Opens a file with the game's default sharing behavior and returns the CRT-compatible file handle.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 31,
          "symbol_index": 31,
          "accessor": "DTTR_PCDOGS_F_File_Open",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_OPEN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_OPEN"
        }
      }
    },
    "File_OpenMode": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "access",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "share",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Access/share-mode pair, passed through file-open wrappers.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_File_OpenMode"
        }
      }
    },
    "File_OpenWithMode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4482003,
            "rva": 287699,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4489843,
            "rva": 295539,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4489619,
            "rva": 295315,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "File_Handle*",
          "params": [
            {
              "name": "filename",
              "type": "char const*"
            },
            {
              "name": "mode",
              "type": "char const*"
            },
            {
              "name": "sharing_flag",
              "type": "uint8_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? 85 C0 75 ?? C3",
          "match_offset": 0
        },
        "docs": "Opens a file with an explicit mode string and sharing flag, returning the game's CRT-compatible file handle.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 30,
          "symbol_index": 30,
          "accessor": "DTTR_PCDOGS_F_File_OpenWithMode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_OPEN_WITH_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_OPEN_WITH_MODE"
        }
      }
    },
    "File_SaveScreenshot": {
      "function": {
        "analysis": {
          "en": {
            "address": 4295904,
            "rva": 101600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_UnlockSurface"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4296384,
            "rva": 102080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_UnlockSurface"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4296384,
            "rva": 102080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "DDraw_UnlockSurface"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "path",
              "type": "const char*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 18 53 55 56 57 6A 28 6A 40 FF 15 ??",
          "match_offset": 0
        },
        "docs": "Writes the current 640x480 backbuffer to a BMP file at path; the original game writes a larger pixel payload than the header size field reports.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 226,
          "symbol_index": 226,
          "accessor": "DTTR_PCDOGS_F_File_SaveScreenshot",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_SAVE_SCREENSHOT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_SAVE_SCREENSHOT"
        }
      }
    },
    "File_SeekAndGetPosition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4482768,
            "rva": 288464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "File_SeekAndGetPosition_DescriptorTable"
                },
                "instr_offset": 92,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 399,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ReadGameFile"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4490608,
            "rva": 296304,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "File_SeekAndGetPosition_DescriptorTable"
                },
                "instr_offset": 92,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 399,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 441,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4490384,
            "rva": 296080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "File_SeekAndGetPosition_DescriptorTable"
                },
                "instr_offset": 92,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 399,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 441,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "stream",
              "type": "File_Handle*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "File_SeekAndGetPosition_DescriptorTable"
            },
            "instr_offset": 92,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "5F 04 6A 01 53 56 E8 ??",
          "match_offset": -26
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 671,
          "symbol_index": 671,
          "accessor": "DTTR_PCDOGS_F_File_SeekAndGetPosition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_SEEK_AND_GET_POSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_SEEK_AND_GET_POSITION"
        }
      }
    },
    "File_SeekAndGetPosition_DescriptorTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 27832384,
            "rva": 23638080,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_SeekAndGetPosition"
                },
                "instr_offset": 92,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843648,
            "rva": 23649344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_SeekAndGetPosition"
                },
                "instr_offset": 92,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27843072,
            "rva": 23648768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_SeekAndGetPosition"
                },
                "instr_offset": 92,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "File_SeekAndGetPosition"
            },
            "instr_offset": 92,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 971,
          "symbol_index": 971,
          "accessor": "DTTR_PCDOGS_D_File_SeekAndGetPosition_DescriptorTable",
          "sdk_id": "DTTR_PCDOGS_DATA_FILE_SEEK_AND_GET_POSITION_DESCRIPTOR_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_FILE_SEEK_AND_GET_POSITION_DESCRIPTOR_TABLE"
        }
      }
    },
    "File_WriteBytes": {
      "function": {
        "analysis": {
          "en": {
            "address": 4489070,
            "rva": 294766,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 829,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4496910,
            "rva": 302606,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 829,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4496686,
            "rva": 302382,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 829,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "file_no",
              "type": "int32_t"
            },
            {
              "name": "buffer",
              "type": "void const*"
            },
            {
              "name": "byte_count",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 81 EC 14 04 00 00 8B 4D 08 53 3B 0D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 689,
          "symbol_index": 689,
          "accessor": "DTTR_PCDOGS_F_File_WriteBytes",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_WRITE_BYTES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_WRITE_BYTES"
        }
      }
    },
    "File_WriteChar": {
      "function": {
        "analysis": {
          "en": {
            "address": 4486308,
            "rva": 292004,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4494148,
            "rva": 299844,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4493924,
            "rva": 299620,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteCharWithCounter"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "ch",
              "type": "int32_t"
            },
            {
              "name": "stream",
              "type": "File_Handle*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 5E 10 A8 82 0F 84 ??",
          "match_offset": -11
        },
        "docs": "Fputc-like writer: writes ch to stream, flushing or filling the stream buffer as needed; returns the written byte or -1 on failure.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 684,
          "symbol_index": 684,
          "accessor": "DTTR_PCDOGS_F_File_WriteChar",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_WRITE_CHAR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_WRITE_CHAR"
        }
      }
    },
    "File_WriteCharWithCounter": {
      "function": {
        "analysis": {
          "en": {
            "address": 4488442,
            "rva": 294138,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "CRT_CaptureNLGNotifyContext"
                },
                "instr_offset": 347,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Exception_RtlUnwindThunk"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4496282,
            "rva": 301978,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "CRT_CaptureNLGNotifyContext"
                },
                "instr_offset": 347,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Exception_RtlUnwindThunk"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4496058,
            "rva": 301754,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "CRT_CaptureNLGNotifyContext"
                },
                "instr_offset": 347,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Exception_RtlUnwindThunk"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 722,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "ch",
              "type": "int32_t"
            },
            {
              "name": "stream",
              "type": "File_Handle*"
            },
            {
              "name": "written_count",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "EB ?? 51 FF 75 08 E8 ??",
          "match_offset": -23
        },
        "docs": "Buffered putc helper: writes ch to stream, increments *writtenCount on success, or sets it to -1 on failure; returns writtenCount.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 685,
          "symbol_index": 685,
          "accessor": "DTTR_PCDOGS_F_File_WriteCharWithCounter",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_WRITE_CHAR_WITH_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_WRITE_CHAR_WITH_COUNTER"
        }
      }
    },
    "File_WriteElements": {
      "function": {
        "analysis": {
          "en": {
            "address": 4483484,
            "rva": 289180,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_WriteGameFile"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4491324,
            "rva": 297020,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 571,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4491100,
            "rva": 296796,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 133,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 571,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t",
          "params": [
            {
              "name": "buffer",
              "type": "void const*"
            },
            {
              "name": "size",
              "type": "uint32_t"
            },
            {
              "name": "count",
              "type": "uint32_t"
            },
            {
              "name": "stream",
              "type": "File_Handle*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B DF 75 ?? 33 C0 E9 ??",
          "match_offset": -25
        },
        "docs": "Fwrite-like buffered writer: writes count elements of size bytes from buffer to stream and returns the element count written.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 672,
          "symbol_index": 672,
          "accessor": "DTTR_PCDOGS_F_File_WriteElements",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_FILE_WRITE_ELEMENTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_FILE_WRITE_ELEMENTS"
        }
      }
    },
    "Game_BackupSettings": {
      "function": {
        "analysis": {
          "en": {
            "address": 4366048,
            "rva": 171744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Game_BackupSettings_NameEntryRow"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_BackupSettings_SavedGameSettings"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_BackupSettings_SavedPlayerLives"
                },
                "instr_offset": 28,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 443,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4369392,
            "rva": 175088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Game_BackupSettings_NameEntryRow"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_BackupSettings_SavedGameSettings"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_BackupSettings_SavedPlayerLives"
                },
                "instr_offset": 28,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 443,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4369392,
            "rva": 175088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Game_BackupSettings_NameEntryRow"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_BackupSettings_SavedGameSettings"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Game_BackupSettings_SavedPlayerLives"
                },
                "instr_offset": 28,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 443,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Game_BackupSettings_NameEntryRow"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Game_BackupSettings_SavedGameSettings"
            },
            "instr_offset": 22,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Game_BackupSettings_SavedPlayerLives"
            },
            "instr_offset": 28,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "89 15 ?? ?? ?? ?? 33 C0 C3",
          "match_offset": -28
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 356,
          "symbol_index": 356,
          "accessor": "DTTR_PCDOGS_F_Game_BackupSettings",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GAME_BACKUP_SETTINGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GAME_BACKUP_SETTINGS"
        }
      }
    },
    "Game_BackupSettings_NameEntryRow": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831720,
            "rva": 637416,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840616,
            "rva": 646312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840600,
            "rva": 646296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Game_BackupSettings"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Dual-use scratch cell: name-entry row state during name entry, options-backup slot while Game_BackupSettings runs.",
        "sdk": {
          "id": 546,
          "symbol_index": 546,
          "accessor": "DTTR_PCDOGS_D_Game_BackupSettings_NameEntryRow",
          "sdk_id": "DTTR_PCDOGS_DATA_GAME_BACKUP_SETTINGS_NAME_ENTRY_ROW",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GAME_BACKUP_SETTINGS_NAME_ENTRY_ROW"
        }
      }
    },
    "Game_BackupSettings_SavedGameSettings": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831724,
            "rva": 637420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840620,
            "rva": 646316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840604,
            "rva": 646300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Game_BackupSettings"
            },
            "instr_offset": 22,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 548,
          "symbol_index": 548,
          "accessor": "DTTR_PCDOGS_D_Game_BackupSettings_SavedGameSettings",
          "sdk_id": "DTTR_PCDOGS_DATA_GAME_BACKUP_SETTINGS_SAVED_GAME_SETTINGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GAME_BACKUP_SETTINGS_SAVED_GAME_SETTINGS"
        }
      }
    },
    "Game_BackupSettings_SavedPlayerLives": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831728,
            "rva": 637424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 28,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840624,
            "rva": 646320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 28,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840608,
            "rva": 646304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 28,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Game_BackupSettings"
            },
            "instr_offset": 28,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 549,
          "symbol_index": 549,
          "accessor": "DTTR_PCDOGS_D_Game_BackupSettings_SavedPlayerLives",
          "sdk_id": "DTTR_PCDOGS_DATA_GAME_BACKUP_SETTINGS_SAVED_PLAYER_LIVES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GAME_BACKUP_SETTINGS_SAVED_PLAYER_LIVES"
        }
      }
    },
    "Game_FrameTransitionFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838024,
            "rva": 643720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848256,
            "rva": 653952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4847680,
            "rva": 653376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Audio_TriggerMusicTransition"
            },
            "instr_offset": 12,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Audio_TriggerMusicTransition",
          "instr_offset": 12,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Shared frame/input/audio transition bitfield: bit 0x20 marks demo replay playback, bit 0x10 selects alternate 3D-audio listener camera data, bit 0x400 is set by Audio_TriggerMusicTransition, bit 0x08 requests unload before being cleared after PKG_UnloadResourceGameData, bit 0x1000 allows cleanup/load rendering, bit 0x4000 requests Level_Load, bit 0x04 marks post-load actor/audio initialization, and bit 0x02 allows active scene update/render.",
        "sdk": {
          "id": 710,
          "symbol_index": 710,
          "accessor": "DTTR_PCDOGS_D_Game_FrameTransitionFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_GAME_FRAME_TRANSITION_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GAME_FRAME_TRANSITION_FLAGS"
        }
      }
    },
    "Game_InitializeEngine": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4376592,
            "rva": 182288,
            "image_base": 4194304
          },
          "eu": {
            "address": 4380352,
            "rva": 186048,
            "image_base": 4194304
          },
          "sc": {
            "address": 4380320,
            "rva": 186016,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "E8 ?? ?? ?? ?? 85 C0 75 ?? 32 C0"
      }
    },
    "Game_InitializeSystems": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4450233,
            "rva": 255929,
            "image_base": 4194304
          },
          "eu": {
            "address": 4455506,
            "rva": 261202,
            "image_base": 4194304
          },
          "sc": {
            "address": 4455474,
            "rva": 261170,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "E8 ?? ?? ?? ?? 8D 54 24 ?? 56"
      }
    },
    "Game_InitializedAnchor": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4449828,
            "rva": 255524,
            "image_base": 4194304
          },
          "eu": {
            "address": 4455092,
            "rva": 260788,
            "image_base": 4194304
          },
          "sc": {
            "address": 4455060,
            "rva": 260756,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "89 35 ?? ?? ?? ?? C6 44 24 ?? 10"
      }
    },
    "Game_IsSoundEnabled": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353296,
            "rva": 158992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 470,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355232,
            "rva": 160928,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 470,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355232,
            "rva": 160928,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 470,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? F7 D8 1B C0 40 C3",
          "match_offset": 0
        },
        "docs": "Checks whether sound effects are enabled.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 303,
          "symbol_index": 303,
          "accessor": "DTTR_PCDOGS_F_Game_IsSoundEnabled",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GAME_IS_SOUND_ENABLED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GAME_IS_SOUND_ENABLED"
        }
      }
    },
    "Game_PauseStateCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507279,
            "rva": 2312975,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518543,
            "rva": 2324239,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517967,
            "rva": 2323663,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Game_UpdateAndRenderScene"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Game_UpdateAndRenderScene",
          "instr_offset": 0,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Pause frame counter tested at the top of Game_UpdateAndRenderScene.",
        "sdk": {
          "id": 709,
          "symbol_index": 709,
          "accessor": "DTTR_PCDOGS_D_Game_PauseStateCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_GAME_PAUSE_STATE_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GAME_PAUSE_STATE_COUNTER"
        }
      }
    },
    "Game_RenderOverlays": {
      "function": {
        "analysis": {
          "en": {
            "address": 4457408,
            "rva": 263104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4462960,
            "rva": 268656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4462976,
            "rva": 268672,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "frame_arg",
              "type": "int32_t",
              "docs": "Callback/frame argument forwarded to Graphics_UpdateFadeCounters; the current callee ignores it."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? 8B 44 24 04",
          "match_offset": 0
        },
        "docs": "Updates screen fade state, forwards the frame argument to the fade-counter callback path, renders UI sprites, and tail-calls the pause menu renderer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 575,
          "symbol_index": 575,
          "accessor": "DTTR_PCDOGS_F_Game_RenderOverlays",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GAME_RENDER_OVERLAYS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GAME_RENDER_OVERLAYS"
        }
      }
    },
    "Game_SetSoundEnabled": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353312,
            "rva": 159008,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Game_TransitionAndSettingsFlags"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetEnabledFlag"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 481,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355248,
            "rva": 160944,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Game_TransitionAndSettingsFlags"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetEnabledFlag"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 481,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355248,
            "rva": 160944,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Game_TransitionAndSettingsFlags"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetEnabledFlag"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 481,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "enabled",
              "type": "int32_t",
              "docs": "Non-zero to enable game sound effects."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Game_TransitionAndSettingsFlags"
            },
            "instr_offset": 12,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 A2 ?? ?? ?? ?? E8 ??",
          "match_offset": -11
        },
        "docs": "Update the game sound-effects enabled flag.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 304,
          "symbol_index": 304,
          "accessor": "DTTR_PCDOGS_F_Game_SetSoundEnabled",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GAME_SET_SOUND_ENABLED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GAME_SET_SOUND_ENABLED"
        }
      }
    },
    "Game_TransitionAndSettingsFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551120,
            "rva": 356816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1978,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559456,
            "rva": 365152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1978,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559440,
            "rva": 365136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1978,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Camera_UpdateFollow"
            },
            "instr_offset": 1978,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Game_SetSoundEnabled"
            },
            "instr_offset": 12,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Shared game-state/settings dword used in camera transition and sound-setting paths. The broad symbol covers multiple settings and transition bits.",
        "sdk": {
          "id": 344,
          "symbol_index": 344,
          "accessor": "DTTR_PCDOGS_D_Game_TransitionAndSettingsFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_GAME_TRANSITION_AND_SETTINGS_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GAME_TRANSITION_AND_SETTINGS_FLAGS"
        }
      }
    },
    "Game_TransitionToLevel": {
      "function": {
        "analysis": {
          "en": {
            "address": 4380256,
            "rva": 185952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_PassthroughIndex"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 391,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 442,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4385136,
            "rva": 190832,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_PassthroughIndex"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 989,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 1041,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4385104,
            "rva": 190800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_PassthroughIndex"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 989,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 1041,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "level_id",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 54 24 04 8D 42 F9 A3 ?? ?? ?? ?? A1 ?? ?? ?? ?? 85 C0 75 ?? 52 E8 ?? ?? ?? ?? 83 C4 04 A3 ?? ?? ?? ?? 32 C0 C3 80 3D ?? ?? ?? ?? 03 75 ?? 32 C0 C3 57 B9 2C 00 00 00 33 C0 BF ?? ?? ?? ?? F3 AB",
          "match_offset": 0
        },
        "docs": "Begins or completes the transition into the requested level id, including menu/loading-state setup.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 391,
          "symbol_index": 391,
          "accessor": "DTTR_PCDOGS_F_Game_TransitionToLevel",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GAME_TRANSITION_TO_LEVEL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GAME_TRANSITION_TO_LEVEL"
        }
      }
    },
    "Game_TriggerPause": {
      "function": {
        "analysis": {
          "en": {
            "address": 4456336,
            "rva": 262032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuTransition"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461872,
            "rva": 267568,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 206,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461888,
            "rva": 267584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 206,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "pause_type",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "05 ?? ?? ?? ?? 0A A1 ??",
          "match_offset": -9
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 570,
          "symbol_index": 570,
          "accessor": "DTTR_PCDOGS_F_Game_TriggerPause",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GAME_TRIGGER_PAUSE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GAME_TRIGGER_PAUSE"
        }
      }
    },
    "Game_UpdateAndRenderScene": {
      "function": {
        "analysis": {
          "en": {
            "address": 4456384,
            "rva": 262080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Game_PauseStateCounter"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 344,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 379,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 450,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 534,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 569,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 460,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 508,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 500,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 182,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 389,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 349,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_UpdateTimedEvents"
                },
                "instr_offset": 374,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461920,
            "rva": 267616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Game_PauseStateCounter"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 394,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 389,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 460,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 551,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 470,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 510,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 261,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 399,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 359,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_UpdateTimedEvents"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 410,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461936,
            "rva": 267632,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Game_PauseStateCounter"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 394,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 248,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_UpdateEffects"
                },
                "instr_offset": 389,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 460,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 551,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 470,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 510,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 261,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 399,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 359,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_UpdateTimedEvents"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 410,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Game_PauseStateCounter"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A0 ?? ?? ?? ?? 84 C0 0F 84 ?? ?? ?? ?? E8",
          "match_offset": 0
        },
        "docs": "Top-level per-frame scene/update/render driver returning native scalar status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 571,
          "symbol_index": 571,
          "accessor": "DTTR_PCDOGS_F_Game_UpdateAndRenderScene",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GAME_UPDATE_AND_RENDER_SCENE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GAME_UPDATE_AND_RENDER_SCENE"
        }
      }
    },
    "Graphics_AdjustColorQuadRGB": {
      "function": {
        "analysis": {
          "en": {
            "address": 4458048,
            "rva": 263744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 4017,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4463600,
            "rva": 269296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 4017,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4463616,
            "rva": 269312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 4017,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "input_quad_rgb",
              "type": "const uint32_t*",
              "docs": "Four packed 0x00BBGGRR colors."
            },
            {
              "name": "output_quad_rgb",
              "type": "uint32_t*",
              "docs": "Four packed destination colors receiving clamped RGB adjustments."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 08 A1 ?? ?? ?? ?? 33",
          "match_offset": 0
        },
        "docs": "Applies the global RGB adjustment bytes, centered at 0x80, to four packed RGB colors with per-channel 0..255 saturation.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 580,
          "symbol_index": 580,
          "accessor": "DTTR_PCDOGS_F_Graphics_AdjustColorQuadRGB",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_ADJUST_COLOR_QUAD_RGB",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_ADJUST_COLOR_QUAD_RGB"
        }
      }
    },
    "Graphics_AdjustLevelScale": {
      "function": {
        "analysis": {
          "en": {
            "address": 4232912,
            "rva": 38608,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_DebugMaxFPSThreshold"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_Factor"
                },
                "instr_offset": 63,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_ListState"
                },
                "instr_offset": 101,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_MaxGammaClamp"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_OneOverThirtyFPS"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 546,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4233376,
            "rva": 39072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_DebugMaxFPSThreshold"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_Factor"
                },
                "instr_offset": 63,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_ListState"
                },
                "instr_offset": 101,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_MaxGammaClamp"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_OneOverThirtyFPS"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 546,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4233376,
            "rva": 39072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_DebugMaxFPSThreshold"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_Factor"
                },
                "instr_offset": 63,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_ListState"
                },
                "instr_offset": 101,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_MaxGammaClamp"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_AdjustLevelScale_OneOverThirtyFPS"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 546,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "measured_fps",
              "type": "float",
              "docs": "Averaged frame rate measured by Graphics_RenderFrame before adjusting the level/render scale."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_AdjustLevelScale_DebugMaxFPSThreshold"
            },
            "instr_offset": 50,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_AdjustLevelScale_MaxGammaClamp"
            },
            "instr_offset": 33,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_AdjustLevelScale_OneOverThirtyFPS"
            },
            "instr_offset": 80,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_AdjustLevelScale_ListState"
            },
            "instr_offset": 101,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_AdjustLevelScale_Factor"
            },
            "instr_offset": 63,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 7C",
          "match_offset": 0
        },
        "docs": "Adjusts the global level/render scale from measured_fps during Graphics_RenderFrame. Eligible 10..30 FPS modes use the reciprocal lookup path; higher frame rates restore the base level scale.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 87,
          "symbol_index": 87,
          "accessor": "DTTR_PCDOGS_F_Graphics_AdjustLevelScale",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_ADJUST_LEVEL_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_ADJUST_LEVEL_SCALE"
        }
      },
      "signature": {
        "analysis": {
          "en": {
            "address": 4232912,
            "rva": 38608,
            "image_base": 4194304
          },
          "eu": {
            "address": 4233376,
            "rva": 39072,
            "image_base": 4194304
          },
          "sc": {
            "address": 4233376,
            "rva": 39072,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "A1 ?? ?? ?? ?? 85 C0 7C"
      }
    },
    "Graphics_AdjustLevelScale_DebugMaxFPSThreshold": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509696,
            "rva": 315392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517888,
            "rva": 323584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517888,
            "rva": 323584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_AdjustLevelScale"
            },
            "instr_offset": 50,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_AdjustLevelScale",
          "instr_offset": 50,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "sdk": {
          "id": 16,
          "symbol_index": 16,
          "accessor": "DTTR_PCDOGS_D_Graphics_AdjustLevelScale_DebugMaxFPSThreshold",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_ADJUST_LEVEL_SCALE_DEBUG_MAX_FPS_THRESHOLD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_ADJUST_LEVEL_SCALE_DEBUG_MAX_FPS_THRESHOLD"
        }
      }
    },
    "Graphics_AdjustLevelScale_Factor": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831716,
            "rva": 23637412,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 63,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27842980,
            "rva": 23648676,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 63,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27842404,
            "rva": 23648100,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 63,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_AdjustLevelScale"
            },
            "instr_offset": 63,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 954,
          "symbol_index": 954,
          "accessor": "DTTR_PCDOGS_D_Graphics_AdjustLevelScale_Factor",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_ADJUST_LEVEL_SCALE_FACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_ADJUST_LEVEL_SCALE_FACTOR"
        }
      }
    },
    "Graphics_AdjustLevelScale_ListState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541160,
            "rva": 346856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 101,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549496,
            "rva": 355192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 101,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549476,
            "rva": 355172,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 101,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_AdjustLevelScale"
            },
            "instr_offset": 101,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Graphics_ListState*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_AdjustLevelScale",
          "instr_offset": 101,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Data pointer to active Graphics_ListState used when Graphics_AdjustLevelScale writes dynamic level scale.",
        "sdk": {
          "id": 304,
          "symbol_index": 304,
          "accessor": "DTTR_PCDOGS_D_Graphics_AdjustLevelScale_ListState",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_ADJUST_LEVEL_SCALE_LIST_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_ADJUST_LEVEL_SCALE_LIST_STATE"
        }
      }
    },
    "Graphics_AdjustLevelScale_MaxGammaClamp": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509700,
            "rva": 315396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517892,
            "rva": 323588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517892,
            "rva": 323588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_AdjustLevelScale"
            },
            "instr_offset": 33,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 67,
          "symbol_index": 67,
          "accessor": "DTTR_PCDOGS_D_Graphics_AdjustLevelScale_MaxGammaClamp",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_ADJUST_LEVEL_SCALE_MAX_GAMMA_CLAMP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_ADJUST_LEVEL_SCALE_MAX_GAMMA_CLAMP"
        }
      }
    },
    "Graphics_AdjustLevelScale_OneOverThirtyFPS": {
      "data": {
        "analysis": {
          "en": {
            "address": 4513884,
            "rva": 319580,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4522076,
            "rva": 327772,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4522076,
            "rva": 327772,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_AdjustLevelScale"
            },
            "instr_offset": 80,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "float",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_AdjustLevelScale",
          "instr_offset": 80,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Scalar float constant 1/30 (one frame at 30 FPS); not a reciprocal lookup table.",
        "sdk": {
          "id": 114,
          "symbol_index": 114,
          "accessor": "DTTR_PCDOGS_D_Graphics_AdjustLevelScale_OneOverThirtyFPS",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_ADJUST_LEVEL_SCALE_ONE_OVER_THIRTY_FPS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_ADJUST_LEVEL_SCALE_ONE_OVER_THIRTY_FPS"
        }
      }
    },
    "Graphics_Batch": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_index",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "texture_id",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "batch_flags",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "screen_coords[12]",
            "offset": 16,
            "doc": null
          },
          {
            "type": "float",
            "name": "view_space_pos[12]",
            "offset": 64,
            "doc": null
          },
          {
            "type": "float",
            "name": "fog_depth",
            "offset": 112,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "vertex_colors[4]",
            "offset": 116,
            "doc": null
          }
        ],
        "size": 132,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_Batch"
        }
      }
    },
    "Graphics_BeginRendering": {
      "function": {
        "analysis": {
          "en": {
            "address": 4377760,
            "rva": 183456,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 1005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4382160,
            "rva": 187856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 551,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 1005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 555,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 530,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4382128,
            "rva": 187824,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 551,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 1005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 555,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 530,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "clear_flags",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? 6A 00 E8 ?? ?? ?? ?? 8B 0D",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 377,
          "symbol_index": 377,
          "accessor": "DTTR_PCDOGS_F_Graphics_BeginRendering",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_BEGIN_RENDERING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_BEGIN_RENDERING"
        }
      }
    },
    "Graphics_BlitTextureToQuadrants": {
      "function": {
        "analysis": {
          "en": {
            "address": 4277680,
            "rva": 83376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_BlitTextureToQuadrants_D3DErrWorkSurfaceNull"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4278160,
            "rva": 83856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_BlitTextureToQuadrants_D3DErrWorkSurfaceNull"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4278160,
            "rva": 83856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_BlitTextureToQuadrants_D3DErrWorkSurfaceNull"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "quadrant_surfaces",
              "type": "DDraw_IDirectDrawSurface7**"
            },
            {
              "name": "pixel_data",
              "type": "uint8_t*"
            },
            {
              "name": "pixel_count",
              "type": "int32_t"
            },
            {
              "name": "width",
              "type": "int32_t"
            },
            {
              "name": "height",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_BlitTextureToQuadrants_D3DErrWorkSurfaceNull"
            },
            "instr_offset": 137,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "89 5C 24 2C 75 ?? 68 ??",
          "match_offset": -42
        },
        "docs": "Converts an RGBx image to a temporary 16-bit work surface and blits it into four hardcoded 640x480 quadrant surfaces.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 192,
          "symbol_index": 192,
          "accessor": "DTTR_PCDOGS_F_Graphics_BlitTextureToQuadrants",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_BLIT_TEXTURE_TO_QUADRANTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_BLIT_TEXTURE_TO_QUADRANTS"
        }
      }
    },
    "Graphics_BlitTextureToQuadrants_D3DErrWorkSurfaceNull": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515492,
            "rva": 321188,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523684,
            "rva": 329380,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523684,
            "rva": 329380,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_BlitTextureToQuadrants"
            },
            "instr_offset": 137,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 140,
          "symbol_index": 140,
          "accessor": "DTTR_PCDOGS_D_Graphics_BlitTextureToQuadrants_D3DErrWorkSurfaceNull",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_BLIT_TEXTURE_TO_QUADRANTS_D3D_ERR_WORK_SURFACE_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_BLIT_TEXTURE_TO_QUADRANTS_D3D_ERR_WORK_SURFACE_NULL"
        }
      }
    },
    "Graphics_CheckActorVisibilityAndFrustum": {
      "function": {
        "analysis": {
          "en": {
            "address": 4452528,
            "rva": 258224,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_CheckActorGround"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4458112,
            "rva": 263808,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_CheckActorGround"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4458128,
            "rva": 263824,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_CheckActorGround"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "position",
              "type": "Math_Vec3I32*",
              "docs": "World-space fixed-point position tested against the active camera frustum."
            },
            {
              "name": "cull_radius",
              "type": "int32_t",
              "docs": "Object radius/margin scaled by the frustum tests before near/far comparisons."
            },
            {
              "name": "cull_flags",
              "type": "uint8_t",
              "docs": "Bit 2 bypasses the far-depth rejection path."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC ?? 8B 54 24 14 53 55 56 8B 02 8B 4A ?? C1 F8 ??",
          "match_offset": 0
        },
        "docs": "Tests position against the active camera frustum planes. Returns 0 when culled; otherwise returns the near-plane depth with bit 0 set and updates the edge-clipping flag.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 545,
          "symbol_index": 545,
          "accessor": "DTTR_PCDOGS_F_Graphics_CheckActorVisibilityAndFrustum",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_CHECK_ACTOR_VISIBILITY_AND_FRUSTUM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_CHECK_ACTOR_VISIBILITY_AND_FRUSTUM"
        }
      }
    },
    "Graphics_CheckFrustumCull": {
      "function": {
        "analysis": {
          "en": {
            "address": 4452976,
            "rva": 258672,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckActorVisibilityAndFrustum"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 2222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 211,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 955,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4458560,
            "rva": 264256,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckActorVisibilityAndFrustum"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 2222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 211,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 955,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4458576,
            "rva": 264272,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckActorVisibilityAndFrustum"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 2222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 211,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 955,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "position",
              "type": "Math_Vec3I32*",
              "docs": "World-space fixed-point position forwarded to Graphics_CheckActorVisibilityAndFrustum."
            },
            {
              "name": "cull_radius",
              "type": "int32_t",
              "docs": "Object radius/margin used for frustum and distance checks."
            },
            {
              "name": "cull_flags",
              "type": "uint8_t",
              "docs": "Flag byte forwarded to Graphics_CheckActorVisibilityAndFrustum."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 0C 8B 4C 24 04 56 8B 74 24 0C 50 56 51 E8 ??",
          "match_offset": 0
        },
        "docs": "Visibility wrapper that toggles render-state visibility bits from Graphics_CheckActorVisibilityAndFrustum and returns 1 when visible.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 546,
          "symbol_index": 546,
          "accessor": "DTTR_PCDOGS_F_Graphics_CheckFrustumCull",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_CHECK_FRUSTUM_CULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_CHECK_FRUSTUM_CULL"
        }
      }
    },
    "Graphics_CheckShadowRequirement": {
      "function": {
        "analysis": {
          "en": {
            "address": 4218400,
            "rva": 24096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4218848,
            "rva": 24544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4218848,
            "rva": 24544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A4 00 00 00 7D ?? 8B ??",
          "match_offset": -67
        },
        "docs": "Returns actor->linked_actor and, when that linked actor owns a parent component plus a valid child actor, sets behavior_flags bit 0x40 if the child shadow height/scale falls below the linked-actor threshold fields.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 70,
          "symbol_index": 70,
          "accessor": "DTTR_PCDOGS_F_Graphics_CheckShadowRequirement",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_CHECK_SHADOW_REQUIREMENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_CHECK_SHADOW_REQUIREMENT"
        }
      }
    },
    "Graphics_ClearBackground": {
      "function": {
        "analysis": {
          "en": {
            "address": 4457232,
            "rva": 262928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4462784,
            "rva": 268480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4462800,
            "rva": 268496,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "66 81 3D ?? ?? ?? ?? 00 10 7D ?? A1 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 573,
          "symbol_index": 573,
          "accessor": "DTTR_PCDOGS_F_Graphics_ClearBackground",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_CLEAR_BACKGROUND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_CLEAR_BACKGROUND"
        }
      }
    },
    "Graphics_ClearDepthBuffer": {
      "function": {
        "analysis": {
          "en": {
            "address": 4294528,
            "rva": 100224,
            "image_base": 4194304
          },
          "eu": {
            "address": 4294992,
            "rva": 100688,
            "image_base": 4194304
          },
          "sc": {
            "address": 4294992,
            "rva": 100688,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 6A 00 68 00 00 80 3F 6A 00 8B 08 6A 02",
          "match_offset": -4
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 218,
          "symbol_index": 218,
          "accessor": "DTTR_PCDOGS_F_Graphics_ClearDepthBuffer",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_CLEAR_DEPTH_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_CLEAR_DEPTH_BUFFER"
        }
      }
    },
    "Graphics_ClearScreenAndRenderRectangle": {
      "function": {
        "analysis": {
          "en": {
            "address": 4377840,
            "rva": 183536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFilledRectangleGradient"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 434,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 620,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4382240,
            "rva": 187936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFilledRectangleGradient"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_HasFogCapability"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 434,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 716,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4382208,
            "rva": 187904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFilledRectangleGradient"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_HasFogCapability"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 434,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 716,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "x",
              "type": "int32_t"
            },
            {
              "name": "y",
              "type": "int32_t"
            },
            {
              "name": "width",
              "type": "int32_t"
            },
            {
              "name": "height",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? 6A 00 E8 ?? ?? ?? ?? 8B 44",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 378,
          "symbol_index": 378,
          "accessor": "DTTR_PCDOGS_F_Graphics_ClearScreenAndRenderRectangle",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_CLEAR_SCREEN_AND_RENDER_RECTANGLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_CLEAR_SCREEN_AND_RENDER_RECTANGLE"
        }
      }
    },
    "Graphics_ClearScreenWithColor": {
      "function": {
        "analysis": {
          "en": {
            "address": 4295296,
            "rva": 100992,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearBackground"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearBackground"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4295776,
            "rva": 101472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearBackground"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearBackground"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4295776,
            "rva": 101472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearBackground"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearBackground"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "rgb_color",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 35 ?? ?? ?? ?? 57 8B 3D ?? ?? ?? ?? 6A",
          "match_offset": 0
        },
        "docs": "Fills the current viewport with a solid color by drawing a full-screen rectangle while depth writes are disabled.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 222,
          "symbol_index": 222,
          "accessor": "DTTR_PCDOGS_F_Graphics_ClearScreenWithColor",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_CLEAR_SCREEN_WITH_COLOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_CLEAR_SCREEN_WITH_COLOR"
        }
      }
    },
    "Graphics_ClearShadowList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4435584,
            "rva": 241280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClearShadowList_RenderList"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4440656,
            "rva": 246352,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClearShadowList_RenderList"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4440624,
            "rva": 246320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClearShadowList_RenderList"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClearShadowList_RenderList"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C7 05 ?? ?? ?? ?? 00 00 00 00 C3 90 90 90 90 90 55",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 487,
          "symbol_index": 487,
          "accessor": "DTTR_PCDOGS_F_Graphics_ClearShadowList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_CLEAR_SHADOW_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_CLEAR_SHADOW_LIST"
        }
      }
    },
    "Graphics_ClearShadowList_RenderList": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507096,
            "rva": 2312792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearShadowList"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518360,
            "rva": 2324056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearShadowList"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517784,
            "rva": 2323480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearShadowList"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClearShadowList"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 813,
          "symbol_index": 813,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClearShadowList_RenderList",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLEAR_SHADOW_LIST_RENDER_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLEAR_SHADOW_LIST_RENDER_LIST"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon": {
      "function": {
        "analysis": {
          "en": {
            "address": 4284768,
            "rva": 90464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_BatchPrimitiveCount"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_BatchTriangleCount"
                },
                "instr_offset": 2077,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_BottomEdgeClamp"
                },
                "instr_offset": 1881,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff0"
                },
                "instr_offset": 900,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff1"
                },
                "instr_offset": 924,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff2"
                },
                "instr_offset": 944,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff3"
                },
                "instr_offset": 950,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff4"
                },
                "instr_offset": 956,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff5"
                },
                "instr_offset": 912,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff6"
                },
                "instr_offset": 934,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff7"
                },
                "instr_offset": 961,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputAttributes"
                },
                "instr_offset": 888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBuffer"
                },
                "instr_offset": 1043,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferV2"
                },
                "instr_offset": 1083,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferVertex2W"
                },
                "instr_offset": 780,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferY"
                },
                "instr_offset": 1060,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipOutputBuffer"
                },
                "instr_offset": 1448,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadDstU"
                },
                "instr_offset": 847,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadDstV"
                },
                "instr_offset": 853,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadSrcU"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadSrcV"
                },
                "instr_offset": 839,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipTempBuffer"
                },
                "instr_offset": 1443,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ColorBlue"
                },
                "instr_offset": 620,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ColorGreen"
                },
                "instr_offset": 583,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ColorRed"
                },
                "instr_offset": 553,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CurrentVertexFormat"
                },
                "instr_offset": 421,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenX"
                },
                "instr_offset": 2022,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenY"
                },
                "instr_offset": 1949,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_DriverGUID"
                },
                "instr_offset": 1515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_MaxPrimitivesPerBatch"
                },
                "instr_offset": 2004,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_MaxZDepthClamp"
                },
                "instr_offset": 1687,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ProjectScreenWidthHalf"
                },
                "instr_offset": 1585,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ReciprocalZ"
                },
                "instr_offset": 1553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RenderClipMaxX"
                },
                "instr_offset": 806,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RenderClipMinX"
                },
                "instr_offset": 774,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RenderClipMinY"
                },
                "instr_offset": 800,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RightEdgeClamp"
                },
                "instr_offset": 1836,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_TransformedVertices"
                },
                "instr_offset": 2054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_TransformedVerticesY"
                },
                "instr_offset": 1600,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBuffer"
                },
                "instr_offset": 859,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB"
                },
                "instr_offset": 918,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB0"
                },
                "instr_offset": 876,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB1"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB2"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG"
                },
                "instr_offset": 473,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG1"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG2"
                },
                "instr_offset": 1088,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG3"
                },
                "instr_offset": 1148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR0"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR1"
                },
                "instr_offset": 894,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR2"
                },
                "instr_offset": 1107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBuffer"
                },
                "instr_offset": 1038,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Alt"
                },
                "instr_offset": 1193,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Base"
                },
                "instr_offset": 1055,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV2Base"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ZDepthScale"
                },
                "instr_offset": 1677,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ProjectScreenHeightHalf"
                },
                "instr_offset": 1622,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 1463,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SnapVertexToNearestPoint"
                },
                "instr_offset": 1659,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1646,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4285264,
            "rva": 90960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_BatchPrimitiveCount"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_BatchTriangleCount"
                },
                "instr_offset": 2077,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_BottomEdgeClamp"
                },
                "instr_offset": 1881,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff0"
                },
                "instr_offset": 900,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff1"
                },
                "instr_offset": 924,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff2"
                },
                "instr_offset": 944,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff3"
                },
                "instr_offset": 950,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff4"
                },
                "instr_offset": 956,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff5"
                },
                "instr_offset": 912,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff6"
                },
                "instr_offset": 934,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff7"
                },
                "instr_offset": 961,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputAttributes"
                },
                "instr_offset": 888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBuffer"
                },
                "instr_offset": 1043,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferV2"
                },
                "instr_offset": 1083,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferVertex2W"
                },
                "instr_offset": 780,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferY"
                },
                "instr_offset": 1060,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipOutputBuffer"
                },
                "instr_offset": 1448,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadDstU"
                },
                "instr_offset": 847,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadDstV"
                },
                "instr_offset": 853,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadSrcU"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadSrcV"
                },
                "instr_offset": 839,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipTempBuffer"
                },
                "instr_offset": 1443,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ColorBlue"
                },
                "instr_offset": 620,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ColorGreen"
                },
                "instr_offset": 583,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ColorRed"
                },
                "instr_offset": 553,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CurrentVertexFormat"
                },
                "instr_offset": 421,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenX"
                },
                "instr_offset": 2022,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenY"
                },
                "instr_offset": 1949,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_DriverGUID"
                },
                "instr_offset": 1515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_MaxPrimitivesPerBatch"
                },
                "instr_offset": 2004,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_MaxZDepthClamp"
                },
                "instr_offset": 1687,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ProjectScreenWidthHalf"
                },
                "instr_offset": 1585,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ReciprocalZ"
                },
                "instr_offset": 1553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RenderClipMaxX"
                },
                "instr_offset": 806,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RenderClipMinX"
                },
                "instr_offset": 774,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RenderClipMinY"
                },
                "instr_offset": 800,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RightEdgeClamp"
                },
                "instr_offset": 1836,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_TransformedVertices"
                },
                "instr_offset": 2054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_TransformedVerticesY"
                },
                "instr_offset": 1600,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBuffer"
                },
                "instr_offset": 859,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB"
                },
                "instr_offset": 918,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB0"
                },
                "instr_offset": 876,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB1"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB2"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG"
                },
                "instr_offset": 473,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG1"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG2"
                },
                "instr_offset": 1088,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG3"
                },
                "instr_offset": 1148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR0"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR1"
                },
                "instr_offset": 894,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR2"
                },
                "instr_offset": 1107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBuffer"
                },
                "instr_offset": 1038,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Alt"
                },
                "instr_offset": 1193,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Base"
                },
                "instr_offset": 1055,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV2Base"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ZDepthScale"
                },
                "instr_offset": 1677,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ProjectScreenHeightHalf"
                },
                "instr_offset": 1622,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 1463,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SnapVertexToNearestPoint"
                },
                "instr_offset": 1659,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1646,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4285264,
            "rva": 90960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_BatchPrimitiveCount"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_BatchTriangleCount"
                },
                "instr_offset": 2077,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_BottomEdgeClamp"
                },
                "instr_offset": 1881,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff0"
                },
                "instr_offset": 900,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff1"
                },
                "instr_offset": 924,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff2"
                },
                "instr_offset": 944,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff3"
                },
                "instr_offset": 950,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff4"
                },
                "instr_offset": 956,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff5"
                },
                "instr_offset": 912,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff6"
                },
                "instr_offset": 934,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff7"
                },
                "instr_offset": 961,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputAttributes"
                },
                "instr_offset": 888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBuffer"
                },
                "instr_offset": 1043,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferV2"
                },
                "instr_offset": 1083,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferVertex2W"
                },
                "instr_offset": 780,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferY"
                },
                "instr_offset": 1060,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipOutputBuffer"
                },
                "instr_offset": 1448,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadDstU"
                },
                "instr_offset": 847,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadDstV"
                },
                "instr_offset": 853,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadSrcU"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipQuadSrcV"
                },
                "instr_offset": 839,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ClipTempBuffer"
                },
                "instr_offset": 1443,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ColorBlue"
                },
                "instr_offset": 620,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ColorGreen"
                },
                "instr_offset": 583,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ColorRed"
                },
                "instr_offset": 553,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_CurrentVertexFormat"
                },
                "instr_offset": 421,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenX"
                },
                "instr_offset": 2022,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenY"
                },
                "instr_offset": 1949,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_DriverGUID"
                },
                "instr_offset": 1515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_MaxPrimitivesPerBatch"
                },
                "instr_offset": 2004,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_MaxZDepthClamp"
                },
                "instr_offset": 1687,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ProjectScreenWidthHalf"
                },
                "instr_offset": 1585,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ReciprocalZ"
                },
                "instr_offset": 1553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RenderClipMaxX"
                },
                "instr_offset": 806,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RenderClipMinX"
                },
                "instr_offset": 774,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RenderClipMinY"
                },
                "instr_offset": 800,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_RightEdgeClamp"
                },
                "instr_offset": 1836,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_TransformedVertices"
                },
                "instr_offset": 2054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_TransformedVerticesY"
                },
                "instr_offset": 1600,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBuffer"
                },
                "instr_offset": 859,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB"
                },
                "instr_offset": 918,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB0"
                },
                "instr_offset": 876,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB1"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB2"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG"
                },
                "instr_offset": 473,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG1"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG2"
                },
                "instr_offset": 1088,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG3"
                },
                "instr_offset": 1148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR0"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR1"
                },
                "instr_offset": 894,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR2"
                },
                "instr_offset": 1107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBuffer"
                },
                "instr_offset": 1038,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Alt"
                },
                "instr_offset": 1193,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Base"
                },
                "instr_offset": 1055,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV2Base"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipAndDrawPolygon_ZDepthScale"
                },
                "instr_offset": 1677,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ProjectScreenHeightHalf"
                },
                "instr_offset": 1622,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 1463,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SnapVertexToNearestPoint"
                },
                "instr_offset": 1659,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1646,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "batch",
              "type": "Graphics_PolygonBatchRecord*"
            },
            {
              "name": "vertex_buffer_base",
              "type": "void*"
            },
            {
              "name": "clip_color_byte",
              "type": "uint8_t"
            },
            {
              "name": "unused_or_mode",
              "type": "int32_t"
            },
            {
              "name": "brighten_colors",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ZDepthScale"
            },
            "instr_offset": 1677,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_BottomEdgeClamp"
            },
            "instr_offset": 1881,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_RightEdgeClamp"
            },
            "instr_offset": 1836,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_MaxZDepthClamp"
            },
            "instr_offset": 1687,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ProjectScreenHeightHalf"
            },
            "instr_offset": 1622,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ProjectScreenWidthHalf"
            },
            "instr_offset": 1585,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_MaxPrimitivesPerBatch"
            },
            "instr_offset": 2004,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBuffer"
            },
            "instr_offset": 859,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG"
            },
            "instr_offset": 473,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB1"
            },
            "instr_offset": 871,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB0"
            },
            "instr_offset": 876,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR0"
            },
            "instr_offset": 906,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG1"
            },
            "instr_offset": 929,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR1"
            },
            "instr_offset": 894,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB"
            },
            "instr_offset": 918,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferB2"
            },
            "instr_offset": 882,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG2"
            },
            "instr_offset": 1088,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferR2"
            },
            "instr_offset": 1107,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexColorBufferG3"
            },
            "instr_offset": 1148,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexWorkBuffer"
            },
            "instr_offset": 1038,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Base"
            },
            "instr_offset": 1055,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Alt"
            },
            "instr_offset": 1193,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ClipQuadSrcU"
            },
            "instr_offset": 828,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ClipQuadSrcV"
            },
            "instr_offset": 839,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_VertexWorkBufferV2Base"
            },
            "instr_offset": 1078,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ClipQuadDstU"
            },
            "instr_offset": 847,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ClipQuadDstV"
            },
            "instr_offset": 853,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ClipTempBuffer"
            },
            "instr_offset": 1443,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_DriverGUID"
            },
            "instr_offset": 1515,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ClipInputBuffer"
            },
            "instr_offset": 1043,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferY"
            },
            "instr_offset": 1060,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferV2"
            },
            "instr_offset": 1083,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_RenderClipMinX"
            },
            "instr_offset": 774,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_RenderClipMinY"
            },
            "instr_offset": 800,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ClipInputBufferVertex2W"
            },
            "instr_offset": 780,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_RenderClipMaxX"
            },
            "instr_offset": 806,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_TransformedVertices"
            },
            "instr_offset": 2054,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_TransformedVerticesY"
            },
            "instr_offset": 1600,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ClipOutputBuffer"
            },
            "instr_offset": 1448,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ClipInputAttributes"
            },
            "instr_offset": 888,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff0"
            },
            "instr_offset": 900,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff1"
            },
            "instr_offset": 924,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff2"
            },
            "instr_offset": 944,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff3"
            },
            "instr_offset": 950,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff4"
            },
            "instr_offset": 956,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff5"
            },
            "instr_offset": 912,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff6"
            },
            "instr_offset": 934,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff7"
            },
            "instr_offset": 961,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenX"
            },
            "instr_offset": 2022,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenY"
            },
            "instr_offset": 1949,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_BatchTriangleCount"
            },
            "instr_offset": 2077,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_BatchPrimitiveCount"
            },
            "instr_offset": 1999,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ColorBlue"
            },
            "instr_offset": 620,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ColorGreen"
            },
            "instr_offset": 583,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ColorRed"
            },
            "instr_offset": 553,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_CurrentVertexFormat"
            },
            "instr_offset": 421,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipAndDrawPolygon_ReciprocalZ"
            },
            "instr_offset": 1553,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "D1 38 D9 41 3C D8 1D ??",
          "match_offset": -50
        },
        "docs": "Builds vertices from batch data, clips the polygon against the view volume, and draws the clipped result; not a predicate. brightenColors doubles and clamps vertex RGB when nonzero. Called from Graphics_DrawQuad.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 205,
          "symbol_index": 205,
          "accessor": "DTTR_PCDOGS_F_Graphics_ClipAndDrawPolygon",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_CLIP_ANDDRAW_POLYGON",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_BatchPrimitiveCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506772,
            "rva": 2312468,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518036,
            "rva": 2323732,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517460,
            "rva": 2323156,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1999,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1999,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 771,
          "symbol_index": 771,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_BatchPrimitiveCount",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_BATCH_PRIMITIVE_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_BATCH_PRIMITIVE_COUNT"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_BatchTriangleCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506756,
            "rva": 2312452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2077,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518020,
            "rva": 2323716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2077,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517444,
            "rva": 2323140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2077,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 2077,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 769,
          "symbol_index": 769,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_BatchTriangleCount",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_BATCH_TRIANGLE_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_BATCH_TRIANGLE_COUNT"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_BottomEdgeClamp": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509740,
            "rva": 315436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1881,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517932,
            "rva": 323628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1881,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517932,
            "rva": 323628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1881,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1881,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 76,
          "symbol_index": 76,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_BottomEdgeClamp",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_BOTTOM_EDGE_CLAMP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_BOTTOM_EDGE_CLAMP"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff0": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561612,
            "rva": 367308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 900,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569948,
            "rva": 375644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 900,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569932,
            "rva": 375628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 900,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 900,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Scalar camera clip-plane coefficient entry used by Graphics_ClipAndDrawPolygon.",
        "sdk": {
          "id": 448,
          "symbol_index": 448,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff0",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF0"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561616,
            "rva": 367312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 924,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569952,
            "rva": 375648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 924,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569936,
            "rva": 375632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 924,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 924,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Scalar camera clip-plane coefficient entry used by Graphics_ClipAndDrawPolygon.",
        "sdk": {
          "id": 449,
          "symbol_index": 449,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF1"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561620,
            "rva": 367316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 944,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569956,
            "rva": 375652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 944,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569940,
            "rva": 375636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 944,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 944,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Scalar camera clip-plane coefficient entry used by Graphics_ClipAndDrawPolygon.",
        "sdk": {
          "id": 450,
          "symbol_index": 450,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF2"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff3": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561624,
            "rva": 367320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 950,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569960,
            "rva": 375656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 950,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569944,
            "rva": 375640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 950,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 950,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Scalar camera clip-plane coefficient entry used by Graphics_ClipAndDrawPolygon.",
        "sdk": {
          "id": 451,
          "symbol_index": 451,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff3",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF3"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff4": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561628,
            "rva": 367324,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 956,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569964,
            "rva": 375660,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 956,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569948,
            "rva": 375644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 956,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 956,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Scalar camera clip-plane coefficient entry used by Graphics_ClipAndDrawPolygon.",
        "sdk": {
          "id": 452,
          "symbol_index": 452,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff4",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF4",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF4"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff5": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561632,
            "rva": 367328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 912,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569968,
            "rva": 375664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 912,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569952,
            "rva": 375648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 912,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 912,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Scalar camera clip-plane coefficient entry used by Graphics_ClipAndDrawPolygon.",
        "sdk": {
          "id": 453,
          "symbol_index": 453,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff5",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF5",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF5"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff6": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561636,
            "rva": 367332,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 934,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569972,
            "rva": 375668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 934,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569956,
            "rva": 375652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 934,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 934,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Scalar camera clip-plane coefficient entry used by Graphics_ClipAndDrawPolygon.",
        "sdk": {
          "id": 454,
          "symbol_index": 454,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff6",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF6",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF6"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff7": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561640,
            "rva": 367336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 961,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569976,
            "rva": 375672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 961,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569960,
            "rva": 375656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 961,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 961,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Scalar camera clip-plane coefficient entry used by Graphics_ClipAndDrawPolygon.",
        "sdk": {
          "id": 455,
          "symbol_index": 455,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_CameraClipPlaneCoeff7",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF7",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CAMERA_CLIP_PLANE_COEFF7"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ClipInputAttributes": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561608,
            "rva": 367304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569944,
            "rva": 375640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569928,
            "rva": 375624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 888,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Graphics_ClipAttribute[3]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_ClipAndDrawPolygon",
          "instr_offset": 888,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "unknown",
        "docs": "Three-entry Graphics_ClipAttribute input array consumed by Graphics_ClipAndDrawPolygon; previously misread as a clip-plane count.",
        "sdk": {
          "id": 447,
          "symbol_index": 447,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ClipInputAttributes",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_INPUT_ATTRIBUTES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_INPUT_ATTRIBUTES"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ClipInputBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4555976,
            "rva": 361672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1043,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564312,
            "rva": 370008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1043,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564296,
            "rva": 369992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1043,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1043,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 423,
          "symbol_index": 423,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ClipInputBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_INPUT_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_INPUT_BUFFER"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ClipInputBufferV2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556032,
            "rva": 361728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1083,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564368,
            "rva": 370064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1083,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564352,
            "rva": 370048,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1083,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1083,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 425,
          "symbol_index": 425,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ClipInputBufferV2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_INPUT_BUFFER_V2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_INPUT_BUFFER_V2"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ClipInputBufferVertex2W": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556080,
            "rva": 361776,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 780,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564416,
            "rva": 370112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 780,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564400,
            "rva": 370096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 780,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 780,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 428,
          "symbol_index": 428,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ClipInputBufferVertex2W",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_INPUT_BUFFER_VERTEX2_W",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_INPUT_BUFFER_VERTEX2_W"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ClipInputBufferY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556004,
            "rva": 361700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1060,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564340,
            "rva": 370036,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1060,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564324,
            "rva": 370020,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1060,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1060,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 424,
          "symbol_index": 424,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ClipInputBufferY",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_INPUT_BUFFER_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_INPUT_BUFFER_Y"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ClipOutputBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561160,
            "rva": 366856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1448,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569496,
            "rva": 375192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1448,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569480,
            "rva": 375176,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1448,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1448,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 446,
          "symbol_index": 446,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ClipOutputBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_OUTPUT_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_OUTPUT_BUFFER"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ClipQuadDstU": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553880,
            "rva": 359576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 847,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4562216,
            "rva": 367912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 847,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4562200,
            "rva": 367896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 847,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 847,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 408,
          "symbol_index": 408,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ClipQuadDstU",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_QUAD_DST_U",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_QUAD_DST_U"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ClipQuadDstV": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553884,
            "rva": 359580,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 853,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4562220,
            "rva": 367916,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 853,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4562204,
            "rva": 367900,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 853,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 853,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 409,
          "symbol_index": 409,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ClipQuadDstV",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_QUAD_DST_V",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_QUAD_DST_V"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ClipQuadSrcU": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553852,
            "rva": 359548,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4562188,
            "rva": 367884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4562172,
            "rva": 367868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 828,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 405,
          "symbol_index": 405,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ClipQuadSrcU",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_QUAD_SRC_U",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_QUAD_SRC_U"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ClipQuadSrcV": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553856,
            "rva": 359552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 839,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4562192,
            "rva": 367888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 839,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4562176,
            "rva": 367872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 839,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 839,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 406,
          "symbol_index": 406,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ClipQuadSrcV",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_QUAD_SRC_V",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_QUAD_SRC_V"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ClipTempBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553888,
            "rva": 359584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1443,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4562224,
            "rva": 367920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1443,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4562208,
            "rva": 367904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1443,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1443,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 410,
          "symbol_index": 410,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ClipTempBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_TEMP_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CLIP_TEMP_BUFFER"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ColorBlue": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908032,
            "rva": 22713728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 620,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919296,
            "rva": 22724992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 620,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918720,
            "rva": 22724416,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 620,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 620,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 868,
          "symbol_index": 868,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ColorBlue",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_COLOR_BLUE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_COLOR_BLUE"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ColorGreen": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908048,
            "rva": 22713744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 583,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919312,
            "rva": 22725008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 583,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918736,
            "rva": 22724432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 583,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 583,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 872,
          "symbol_index": 872,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ColorGreen",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_COLOR_GREEN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_COLOR_GREEN"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ColorRed": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908064,
            "rva": 22713760,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 553,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919328,
            "rva": 22725024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 553,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918752,
            "rva": 22724448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 553,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 553,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 876,
          "symbol_index": 876,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ColorRed",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_COLOR_RED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_COLOR_RED"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_CurrentVertexFormat": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908220,
            "rva": 22713916,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 421,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919484,
            "rva": 22725180,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 421,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918908,
            "rva": 22724604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 421,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 421,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 906,
          "symbol_index": 906,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_CurrentVertexFormat",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_CURRENT_VERTEX_FORMAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_CURRENT_VERTEX_FORMAT"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenX": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561648,
            "rva": 367344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2022,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569984,
            "rva": 375680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2022,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569968,
            "rva": 375664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2022,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 2022,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 456,
          "symbol_index": 456,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenX",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_D3D_VERTEX_BUFFER_SCREEN_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_D3D_VERTEX_BUFFER_SCREEN_X"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561652,
            "rva": 367348,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1949,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569988,
            "rva": 375684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1949,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569972,
            "rva": 375668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1949,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1949,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 457,
          "symbol_index": 457,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_D3DVertexBufferScreenY",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_D3D_VERTEX_BUFFER_SCREEN_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_D3D_VERTEX_BUFFER_SCREEN_Y"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_DriverGUID": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553892,
            "rva": 359588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4562228,
            "rva": 367924,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4562212,
            "rva": 367908,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1515,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Region 0x457CA4 is dual-use: clip scratch for Graphics_ClipAndDrawPolygon and part of the D3D driver-summary records.",
        "sdk": {
          "id": 411,
          "symbol_index": 411,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_DriverGUID",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_DRIVER_GUID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_DRIVER_GUID"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_MaxPrimitivesPerBatch": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526808,
            "rva": 332504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2004,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4535004,
            "rva": 340700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2004,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4535004,
            "rva": 340700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2004,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 2004,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 270,
          "symbol_index": 270,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_MaxPrimitivesPerBatch",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_MAX_PRIMITIVES_PER_BATCH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_MAX_PRIMITIVES_PER_BATCH"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_MaxZDepthClamp": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509748,
            "rva": 315444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1687,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517940,
            "rva": 323636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1687,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517940,
            "rva": 323636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1687,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1687,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 78,
          "symbol_index": 78,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_MaxZDepthClamp",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_MAX_Z_DEPTH_CLAMP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_MAX_Z_DEPTH_CLAMP"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ProjectScreenWidthHalf": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509756,
            "rva": 315452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1585,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517948,
            "rva": 323644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1585,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517948,
            "rva": 323644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1585,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1585,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 80,
          "symbol_index": 80,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ProjectScreenWidthHalf",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_PROJECT_SCREEN_WIDTH_HALF",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_PROJECT_SCREEN_WIDTH_HALF"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ReciprocalZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830004,
            "rva": 23635700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841268,
            "rva": 23646964,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840692,
            "rva": 23646388,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1553,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 917,
          "symbol_index": 917,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ReciprocalZ",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_RECIPROCAL_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_RECIPROCAL_Z"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_RenderClipMaxX": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556084,
            "rva": 361780,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 806,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564420,
            "rva": 370116,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 806,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564404,
            "rva": 370100,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 806,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 806,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 429,
          "symbol_index": 429,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_RenderClipMaxX",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_RENDER_CLIP_MAX_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_RENDER_CLIP_MAX_X"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_RenderClipMinX": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556052,
            "rva": 361748,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 774,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564388,
            "rva": 370084,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 774,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564372,
            "rva": 370068,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 774,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 774,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 426,
          "symbol_index": 426,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_RenderClipMinX",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_RENDER_CLIP_MIN_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_RENDER_CLIP_MIN_X"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_RenderClipMinY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556056,
            "rva": 361752,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 800,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564392,
            "rva": 370088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 800,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564376,
            "rva": 370072,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 800,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 800,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 427,
          "symbol_index": 427,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_RenderClipMinY",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_RENDER_CLIP_MIN_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_RENDER_CLIP_MIN_Y"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_RightEdgeClamp": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509744,
            "rva": 315440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1836,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517936,
            "rva": 323632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1836,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517936,
            "rva": 323632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1836,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1836,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 77,
          "symbol_index": 77,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_RightEdgeClamp",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_RIGHT_EDGE_CLAMP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_RIGHT_EDGE_CLAMP"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_TransformedVertices": {
      "data": {
        "analysis": {
          "en": {
            "address": 4560712,
            "rva": 366408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569048,
            "rva": 374744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569032,
            "rva": 374728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 2054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 2054,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 444,
          "symbol_index": 444,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_TransformedVertices",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_TRANSFORMED_VERTICES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_TRANSFORMED_VERTICES"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_TransformedVerticesY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4560716,
            "rva": 366412,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1600,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4569052,
            "rva": 374748,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1600,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4569036,
            "rva": 374732,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1600,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1600,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 445,
          "symbol_index": 445,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_TransformedVerticesY",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_TRANSFORMED_VERTICES_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_TRANSFORMED_VERTICES_Y"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551664,
            "rva": 357360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 859,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560000,
            "rva": 365696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 859,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559984,
            "rva": 365680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 859,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 859,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 390,
          "symbol_index": 390,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBufferB": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551692,
            "rva": 357388,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 918,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560028,
            "rva": 365724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 918,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4560012,
            "rva": 365708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 918,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 918,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 397,
          "symbol_index": 397,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBufferB",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_B",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_B"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBufferB0": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551676,
            "rva": 357372,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 876,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560012,
            "rva": 365708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 876,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559996,
            "rva": 365692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 876,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 876,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 393,
          "symbol_index": 393,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBufferB0",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_B0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_B0"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBufferB1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551672,
            "rva": 357368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560008,
            "rva": 365704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559992,
            "rva": 365688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 871,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 392,
          "symbol_index": 392,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBufferB1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_B1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_B1"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBufferB2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551696,
            "rva": 357392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560032,
            "rva": 365728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4560016,
            "rva": 365712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 882,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 398,
          "symbol_index": 398,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBufferB2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_B2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_B2"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBufferG": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551668,
            "rva": 357364,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 473,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560004,
            "rva": 365700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 473,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559988,
            "rva": 365684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 473,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 473,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 391,
          "symbol_index": 391,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBufferG",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_G",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_G"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBufferG1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551684,
            "rva": 357380,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560020,
            "rva": 365716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4560004,
            "rva": 365700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 929,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 395,
          "symbol_index": 395,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBufferG1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_G1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_G1"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBufferG2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551700,
            "rva": 357396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1088,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560036,
            "rva": 365732,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1088,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4560020,
            "rva": 365716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1088,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1088,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 399,
          "symbol_index": 399,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBufferG2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_G2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_G2"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBufferG3": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551708,
            "rva": 357404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560044,
            "rva": 365740,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4560028,
            "rva": 365724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1148,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 401,
          "symbol_index": 401,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBufferG3",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_G3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_G3"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBufferR0": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551680,
            "rva": 357376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560016,
            "rva": 365712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4560000,
            "rva": 365696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 906,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 394,
          "symbol_index": 394,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBufferR0",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_R0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_R0"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBufferR1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551688,
            "rva": 357384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 894,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560024,
            "rva": 365720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 894,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4560008,
            "rva": 365704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 894,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 894,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 396,
          "symbol_index": 396,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBufferR1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_R1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_R1"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexColorBufferR2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551704,
            "rva": 357400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4560040,
            "rva": 365736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4560024,
            "rva": 365720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1107,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 400,
          "symbol_index": 400,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexColorBufferR2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_R2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_COLOR_BUFFER_R2"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexWorkBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553776,
            "rva": 359472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1038,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4562112,
            "rva": 367808,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1038,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4562096,
            "rva": 367792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1038,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1038,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 402,
          "symbol_index": 402,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexWorkBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_WORK_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_WORK_BUFFER"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Alt": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553832,
            "rva": 359528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1193,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4562168,
            "rva": 367864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1193,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4562152,
            "rva": 367848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1193,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1193,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 404,
          "symbol_index": 404,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Alt",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_WORK_BUFFER_V1_ALT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_WORK_BUFFER_V1_ALT"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Base": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553804,
            "rva": 359500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1055,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4562140,
            "rva": 367836,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1055,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4562124,
            "rva": 367820,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1055,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1055,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 403,
          "symbol_index": 403,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexWorkBufferV1Base",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_WORK_BUFFER_V1_BASE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_WORK_BUFFER_V1_BASE"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_VertexWorkBufferV2Base": {
      "data": {
        "analysis": {
          "en": {
            "address": 4553860,
            "rva": 359556,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4562196,
            "rva": 367892,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4562180,
            "rva": 367876,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1078,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 407,
          "symbol_index": 407,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_VertexWorkBufferV2Base",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_WORK_BUFFER_V2_BASE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_VERTEX_WORK_BUFFER_V2_BASE"
        }
      }
    },
    "Graphics_ClipAndDrawPolygon_ZDepthScale": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509720,
            "rva": 315416,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1677,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517912,
            "rva": 323608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1677,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517912,
            "rva": 323608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1677,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1677,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 71,
          "symbol_index": 71,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipAndDrawPolygon_ZDepthScale",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_ANDDRAW_POLYGON_Z_DEPTH_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_ANDDRAW_POLYGON_Z_DEPTH_SCALE"
        }
      }
    },
    "Graphics_ClipAttribute": {
      "type": {
        "members": [
          {
            "type": "float",
            "name": "components[3]",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_ClipAttribute"
        }
      }
    },
    "Graphics_ClipPlane": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3F",
            "name": "normal",
            "offset": 0,
            "doc": null
          },
          {
            "type": "float",
            "name": "distance",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_ClipPlane"
        }
      }
    },
    "Graphics_ClipPolygonByCameraPyramid": {
      "function": {
        "analysis": {
          "en": {
            "address": 4283712,
            "rva": 89408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_LeftPlaneCoeff0"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_NearClipDistance"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_TempUVBuffer"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_TempVertexBuffer"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByPlane"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByPlane"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1463,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4284208,
            "rva": 89904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_LeftPlaneCoeff0"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_NearClipDistance"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_TempUVBuffer"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_TempVertexBuffer"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByPlane"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByPlane"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1463,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4284208,
            "rva": 89904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_LeftPlaneCoeff0"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_NearClipDistance"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_TempUVBuffer"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ClipPolygonByCameraPyramid_TempVertexBuffer"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByPlane"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByPlane"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1463,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "input_vertices",
              "type": "Graphics_ClipVertex*"
            },
            {
              "name": "input_attributes",
              "type": "Graphics_ClipAttribute*"
            },
            {
              "name": "output_vertices",
              "type": "Graphics_ClipVertex*"
            },
            {
              "name": "output_attributes",
              "type": "Graphics_ClipAttribute*"
            },
            {
              "name": "in_out_vertex_count",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipPolygonByCameraPyramid_TempVertexBuffer"
            },
            "instr_offset": 24,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipPolygonByCameraPyramid_TempUVBuffer"
            },
            "instr_offset": 29,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipPolygonByCameraPyramid_LeftPlaneCoeff0"
            },
            "instr_offset": 109,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ClipPolygonByCameraPyramid_NearClipDistance"
            },
            "instr_offset": 161,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "24 14 8B 74 24 18 B8 ??",
          "match_offset": -18
        },
        "docs": "Clips a polygon through the camera clipping plane slab using Graphics_ClipPolygonByPlane and local temp buffers. Returns 0 as soon as a clipping pass leaves fewer than three vertices; otherwise writes final clipped vertices/attributes to the caller buffers.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 201,
          "symbol_index": 201,
          "accessor": "DTTR_PCDOGS_F_Graphics_ClipPolygonByCameraPyramid",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_CLIP_POLYGON_BY_CAMERA_PYRAMID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_CLIP_POLYGON_BY_CAMERA_PYRAMID"
        }
      }
    },
    "Graphics_ClipPolygonByCameraPyramid_LeftPlaneCoeff0": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908144,
            "rva": 22713840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919408,
            "rva": 22725104,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918832,
            "rva": 22724528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipPolygonByCameraPyramid"
            },
            "instr_offset": 109,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Left clip-plane coefficient 0 used by the camera-pyramid polygon clipper.",
        "sdk": {
          "id": 887,
          "symbol_index": 887,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipPolygonByCameraPyramid_LeftPlaneCoeff0",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_POLYGON_BY_CAMERA_PYRAMID_LEFT_PLANE_COEFF0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_POLYGON_BY_CAMERA_PYRAMID_LEFT_PLANE_COEFF0"
        }
      }
    },
    "Graphics_ClipPolygonByCameraPyramid_NearClipDistance": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908192,
            "rva": 22713888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919456,
            "rva": 22725152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918880,
            "rva": 22724576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 161,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipPolygonByCameraPyramid"
            },
            "instr_offset": 161,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 899,
          "symbol_index": 899,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipPolygonByCameraPyramid_NearClipDistance",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_POLYGON_BY_CAMERA_PYRAMID_NEAR_CLIP_DISTANCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_POLYGON_BY_CAMERA_PYRAMID_NEAR_CLIP_DISTANCE"
        }
      }
    },
    "Graphics_ClipPolygonByCameraPyramid_TempUVBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562416,
            "rva": 368112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570752,
            "rva": 376448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570736,
            "rva": 376432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipPolygonByCameraPyramid"
            },
            "instr_offset": 29,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 459,
          "symbol_index": 459,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipPolygonByCameraPyramid_TempUVBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_POLYGON_BY_CAMERA_PYRAMID_TEMP_UV_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_POLYGON_BY_CAMERA_PYRAMID_TEMP_UV_BUFFER"
        }
      }
    },
    "Graphics_ClipPolygonByCameraPyramid_TempVertexBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4561968,
            "rva": 367664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570304,
            "rva": 376000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570288,
            "rva": 375984,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipPolygonByCameraPyramid"
            },
            "instr_offset": 24,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 458,
          "symbol_index": 458,
          "accessor": "DTTR_PCDOGS_D_Graphics_ClipPolygonByCameraPyramid_TempVertexBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CLIP_POLYGON_BY_CAMERA_PYRAMID_TEMP_VERTEX_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CLIP_POLYGON_BY_CAMERA_PYRAMID_TEMP_VERTEX_BUFFER"
        }
      }
    },
    "Graphics_ClipPolygonByPlane": {
      "function": {
        "analysis": {
          "en": {
            "address": 4283168,
            "rva": 88864,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_Zero"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4283664,
            "rva": 89360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_Zero"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4283664,
            "rva": 89360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_Zero"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByCameraPyramid"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "input_vertices",
              "type": "Graphics_ClipVertex*"
            },
            {
              "name": "input_attributes",
              "type": "Graphics_ClipAttribute*"
            },
            {
              "name": "clip_plane",
              "type": "Graphics_ClipPlane*"
            },
            {
              "name": "output_vertices",
              "type": "Graphics_ClipVertex*"
            },
            {
              "name": "output_attributes",
              "type": "Graphics_ClipAttribute*"
            },
            {
              "name": "in_out_vertex_count",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Math_Zero"
            },
            "instr_offset": 279,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C9 89 4C 24 18 0F 8E ??",
          "match_offset": -88
        },
        "docs": "Clips a polygon against one plane, updating inOutVertexCount while copying inside vertices and emitting interpolated edge intersections into the output vertex and attribute buffers. Returns 1 when at least three vertices remain, otherwise 0.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 200,
          "symbol_index": 200,
          "accessor": "DTTR_PCDOGS_F_Graphics_ClipPolygonByPlane",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_CLIP_POLYGON_BY_PLANE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_CLIP_POLYGON_BY_PLANE"
        }
      }
    },
    "Graphics_ClipUVData": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I32",
            "name": "screen",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "rhw",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "color",
            "offset": 16,
            "doc": null
          },
          {
            "type": "float",
            "name": "u",
            "offset": 20,
            "doc": null
          },
          {
            "type": "float",
            "name": "v",
            "offset": 24,
            "doc": null
          }
        ],
        "size": 28,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_ClipUVData"
        }
      }
    },
    "Graphics_ClipVertex": {
      "type": {
        "members": [
          {
            "type": "float",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "float",
            "name": "y",
            "offset": 4,
            "doc": null
          },
          {
            "type": "float",
            "name": "z",
            "offset": 8,
            "doc": null
          },
          {
            "type": "float",
            "name": "w",
            "offset": 12,
            "doc": null
          },
          {
            "type": "float",
            "name": "color_or_data",
            "offset": 16,
            "doc": null
          },
          {
            "type": "float",
            "name": "u",
            "offset": 20,
            "doc": null
          },
          {
            "type": "float",
            "name": "v",
            "offset": 24,
            "doc": null
          }
        ],
        "size": 28,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_ClipVertex"
        }
      }
    },
    "Graphics_Color32": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "b",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "g",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "r",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "a",
            "offset": 3,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_Color32"
        }
      }
    },
    "Graphics_ComponentData": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "parent_actor",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "mesh_data_ptr",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Mesh_RuntimeVertex*",
            "name": "vertex_buffer",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Mesh_RuntimePolygon*",
            "name": "index_buffer",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "mesh_offset",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "material_offset",
            "offset": 24,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "lod_level",
            "offset": 28,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "render_priority",
            "offset": 30,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "texture_ptr",
            "offset": 32,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "vertex_count",
            "offset": 36,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "polygon_count",
            "offset": 40,
            "doc": null
          },
          {
            "type": "int32_t*",
            "name": "transform_matrix",
            "offset": 44,
            "doc": null
          }
        ],
        "size": 48,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_ComponentData"
        }
      }
    },
    "Graphics_ComputeColorGradient": {
      "function": {
        "analysis": {
          "en": {
            "address": 4375664,
            "rva": 181360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 990,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 380,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4379360,
            "rva": 185056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 549,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 618,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 990,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 1310,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4379328,
            "rva": 185024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 549,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 618,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 990,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 1310,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "start_color",
              "type": "int32_t*"
            },
            {
              "name": "end_color",
              "type": "int32_t*"
            },
            {
              "name": "t",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4C 24 0C F7 C1 00 00 00 80 0F 84 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 369,
          "symbol_index": 369,
          "accessor": "DTTR_PCDOGS_F_Graphics_ComputeColorGradient",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_COMPUTE_COLOR_GRADIENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_COMPUTE_COLOR_GRADIENT"
        }
      }
    },
    "Graphics_ComputeVertexColors": {
      "function": {
        "analysis": {
          "en": {
            "address": 4457808,
            "rva": 263504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometry"
                },
                "instr_offset": 5435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpritePolygons"
                },
                "instr_offset": 1767,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4463360,
            "rva": 269056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 6830,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpritePolygons"
                },
                "instr_offset": 1767,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4463376,
            "rva": 269072,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 6830,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpritePolygons"
                },
                "instr_offset": 1767,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t*",
          "params": [
            {
              "name": "runtime_vertices",
              "type": "Mesh_RuntimeVertex*"
            },
            {
              "name": "polygon_ref",
              "type": "Graphics_PolygonRenderRef*"
            },
            {
              "name": "out_colors",
              "type": "uint32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 08 A1 ?? ?? ?? ?? 8B",
          "match_offset": 0
        },
        "docs": "Computes the packed per-vertex colors for a polygon render ref from runtime vertex colors and returns out_colors.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 579,
          "symbol_index": 579,
          "accessor": "DTTR_PCDOGS_F_Graphics_ComputeVertexColors",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_COMPUTE_VERTEX_COLORS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_COMPUTE_VERTEX_COLORS"
        }
      }
    },
    "Graphics_CurrentBoundTextureSurface": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562608,
            "rva": 368304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570944,
            "rva": 376640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570928,
            "rva": 376624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Material_ReleaseTextureArray"
            },
            "instr_offset": 48,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "DDraw_IDirectDrawSurface7*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Material_ReleaseTextureArray",
          "instr_offset": 48,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Shared graphics current-bound texture surface cleared by material texture-array release paths.",
        "sdk": {
          "id": 460,
          "symbol_index": 460,
          "accessor": "DTTR_PCDOGS_D_Graphics_CurrentBoundTextureSurface",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_CURRENT_BOUND_TEXTURE_SURFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_CURRENT_BOUND_TEXTURE_SURFACE"
        }
      }
    },
    "Graphics_D3DDevice7": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908216,
            "rva": 22713912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919480,
            "rva": 22725176,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918904,
            "rva": 22724600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Material_ReleaseTextureArray"
            },
            "instr_offset": 59,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "D3D_IDirect3DDevice7*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Material_ReleaseTextureArray",
          "instr_offset": 59,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Global IDirect3DDevice7 pointer used across texture, render-state, blend, and material cleanup paths.",
        "sdk": {
          "id": 905,
          "symbol_index": 905,
          "accessor": "DTTR_PCDOGS_D_Graphics_D3DDevice7",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_D3D_DEVICE7",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_D3D_DEVICE7"
        }
      }
    },
    "Graphics_DrawFadeOverlay": {
      "function": {
        "analysis": {
          "en": {
            "address": 4293376,
            "rva": 99072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4293840,
            "rva": 99536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4293840,
            "rva": 99536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "packed_origin_xy",
              "type": "int32_t",
              "docs": "Packed signed 16-bit screen x/y origin."
            },
            {
              "name": "packed_size_wh",
              "type": "int32_t",
              "docs": "Packed signed 16-bit width/height added to the origin."
            },
            {
              "name": "opacity_12",
              "type": "int32_t",
              "docs": "0..0x1000 fixed-point opacity; 0x1000 maps to alpha 255."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "7C ?? 18 8B C8 C7 05 ??",
          "match_offset": -44
        },
        "docs": "Draws a black alpha-blended rectangle overlay.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 213,
          "symbol_index": 213,
          "accessor": "DTTR_PCDOGS_F_Graphics_DrawFadeOverlay",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_DRAW_FADE_OVERLAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_DRAW_FADE_OVERLAY"
        }
      }
    },
    "Graphics_DrawFilledRectangleGradient": {
      "function": {
        "analysis": {
          "en": {
            "address": 4292736,
            "rva": 98432,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4293200,
            "rva": 98896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4293200,
            "rva": 98896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int16_t",
          "params": [
            {
              "name": "packed_origin_xy",
              "type": "int32_t",
              "docs": "Packed signed 16-bit screen-space x/y origin."
            },
            {
              "name": "packed_size_wh",
              "type": "int32_t",
              "docs": "Packed signed 16-bit width/height added to the origin."
            },
            {
              "name": "top_left_color",
              "type": "int32_t",
              "docs": "Packed color for the top-left vertex; low byte is the shared alpha."
            },
            {
              "name": "top_right_color",
              "type": "int32_t",
              "docs": "Packed color for the top-right vertex."
            },
            {
              "name": "bottom_left_color",
              "type": "int32_t",
              "docs": "Packed color for the bottom-left vertex."
            },
            {
              "name": "bottom_right_color",
              "type": "int32_t",
              "docs": "Packed color for the bottom-right vertex."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 89 54 24 14 C1 E8 ??",
          "match_offset": -76
        },
        "docs": "Draws a filled screen-space rectangle as a Direct3D triangle strip with per-corner diffuse colors.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 212,
          "symbol_index": 212,
          "accessor": "DTTR_PCDOGS_F_Graphics_DrawFilledRectangleGradient",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_DRAW_FILLED_RECTANGLE_GRADIENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_DRAW_FILLED_RECTANGLE_GRADIENT"
        }
      }
    },
    "Graphics_DrawQuad": {
      "function": {
        "analysis": {
          "en": {
            "address": 4286896,
            "rva": 92592,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_AltUVOffset"
                },
                "instr_offset": 609,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_InputProcessedFlag"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_NegZBias"
                },
                "instr_offset": 2764,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_PosZBias"
                },
                "instr_offset": 2772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_RenderFrameCount"
                },
                "instr_offset": 2973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorBlueVertex1"
                },
                "instr_offset": 1979,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorBlueVertex2"
                },
                "instr_offset": 2173,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorBlueVertex3"
                },
                "instr_offset": 152,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorGreenVertex1"
                },
                "instr_offset": 1956,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorGreenVertex2"
                },
                "instr_offset": 2150,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorGreenVertex3"
                },
                "instr_offset": 141,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorRedVertex1"
                },
                "instr_offset": 1937,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorRedVertex2"
                },
                "instr_offset": 2129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorRedVertex3"
                },
                "instr_offset": 404,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBuffer"
                },
                "instr_offset": 1261,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex1"
                },
                "instr_offset": 1298,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex2"
                },
                "instr_offset": 1325,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex3"
                },
                "instr_offset": 1315,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex0"
                },
                "instr_offset": 972,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex0U"
                },
                "instr_offset": 648,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex0V"
                },
                "instr_offset": 669,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1"
                },
                "instr_offset": 982,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1Ptr"
                },
                "instr_offset": 982,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1U"
                },
                "instr_offset": 692,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1V"
                },
                "instr_offset": 713,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2"
                },
                "instr_offset": 992,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2Ptr"
                },
                "instr_offset": 992,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2U"
                },
                "instr_offset": 748,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2V"
                },
                "instr_offset": 772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3"
                },
                "instr_offset": 1002,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3Ptr"
                },
                "instr_offset": 1002,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3U"
                },
                "instr_offset": 858,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3V"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_VertexPtrs"
                },
                "instr_offset": 108,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 941,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1646,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SelectTextureLOD"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4287392,
            "rva": 93088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_AltUVOffset"
                },
                "instr_offset": 609,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_InputProcessedFlag"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_NegZBias"
                },
                "instr_offset": 2764,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_PosZBias"
                },
                "instr_offset": 2772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_RenderFrameCount"
                },
                "instr_offset": 2973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorBlueVertex1"
                },
                "instr_offset": 1979,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorBlueVertex2"
                },
                "instr_offset": 2173,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorBlueVertex3"
                },
                "instr_offset": 152,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorGreenVertex1"
                },
                "instr_offset": 1956,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorGreenVertex2"
                },
                "instr_offset": 2150,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorGreenVertex3"
                },
                "instr_offset": 141,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorRedVertex1"
                },
                "instr_offset": 1937,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorRedVertex2"
                },
                "instr_offset": 2129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorRedVertex3"
                },
                "instr_offset": 404,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBuffer"
                },
                "instr_offset": 1261,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex1"
                },
                "instr_offset": 1298,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex2"
                },
                "instr_offset": 1325,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex3"
                },
                "instr_offset": 1315,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex0"
                },
                "instr_offset": 972,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex0U"
                },
                "instr_offset": 648,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex0V"
                },
                "instr_offset": 669,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1"
                },
                "instr_offset": 982,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1Ptr"
                },
                "instr_offset": 982,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1U"
                },
                "instr_offset": 692,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1V"
                },
                "instr_offset": 713,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2"
                },
                "instr_offset": 992,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2Ptr"
                },
                "instr_offset": 992,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2U"
                },
                "instr_offset": 748,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2V"
                },
                "instr_offset": 772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3"
                },
                "instr_offset": 1002,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3Ptr"
                },
                "instr_offset": 1002,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3U"
                },
                "instr_offset": 858,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3V"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_VertexPtrs"
                },
                "instr_offset": 108,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 941,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1646,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SelectTextureLOD"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4287392,
            "rva": 93088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_AltUVOffset"
                },
                "instr_offset": 609,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_InputProcessedFlag"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_NegZBias"
                },
                "instr_offset": 2764,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_PosZBias"
                },
                "instr_offset": 2772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_RenderFrameCount"
                },
                "instr_offset": 2973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorBlueVertex1"
                },
                "instr_offset": 1979,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorBlueVertex2"
                },
                "instr_offset": 2173,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorBlueVertex3"
                },
                "instr_offset": 152,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorGreenVertex1"
                },
                "instr_offset": 1956,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorGreenVertex2"
                },
                "instr_offset": 2150,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorGreenVertex3"
                },
                "instr_offset": 141,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorRedVertex1"
                },
                "instr_offset": 1937,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorRedVertex2"
                },
                "instr_offset": 2129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_TempVertexColorRedVertex3"
                },
                "instr_offset": 404,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBuffer"
                },
                "instr_offset": 1261,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex1"
                },
                "instr_offset": 1298,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex2"
                },
                "instr_offset": 1325,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex3"
                },
                "instr_offset": 1315,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex0"
                },
                "instr_offset": 972,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex0U"
                },
                "instr_offset": 648,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex0V"
                },
                "instr_offset": 669,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1"
                },
                "instr_offset": 982,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1Ptr"
                },
                "instr_offset": 982,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1U"
                },
                "instr_offset": 692,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex1V"
                },
                "instr_offset": 713,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2"
                },
                "instr_offset": 992,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2Ptr"
                },
                "instr_offset": 992,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2U"
                },
                "instr_offset": 748,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex2V"
                },
                "instr_offset": 772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3"
                },
                "instr_offset": 1002,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3Ptr"
                },
                "instr_offset": 1002,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3U"
                },
                "instr_offset": 858,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_Vertex3V"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawQuad_VertexPtrs"
                },
                "instr_offset": 108,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 941,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1646,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SelectTextureLOD"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "batch",
              "type": "Graphics_PolygonBatchRecord*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_NegZBias"
            },
            "instr_offset": 2764,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_PosZBias"
            },
            "instr_offset": 2772,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_AltUVOffset"
            },
            "instr_offset": 609,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex0"
            },
            "instr_offset": 972,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex0U"
            },
            "instr_offset": 648,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex0V"
            },
            "instr_offset": 669,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex1"
            },
            "instr_offset": 982,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex1U"
            },
            "instr_offset": 692,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex1V"
            },
            "instr_offset": 713,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex2"
            },
            "instr_offset": 992,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex2U"
            },
            "instr_offset": 748,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex2V"
            },
            "instr_offset": 772,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex3"
            },
            "instr_offset": 1002,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex3U"
            },
            "instr_offset": 858,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex3V"
            },
            "instr_offset": 882,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_UntexturedVertexBuffer"
            },
            "instr_offset": 1261,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex1"
            },
            "instr_offset": 1298,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex2"
            },
            "instr_offset": 1325,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_UntexturedVertexBufferVertex3"
            },
            "instr_offset": 1315,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_VertexPtrs"
            },
            "instr_offset": 108,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex1Ptr"
            },
            "instr_offset": 982,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex2Ptr"
            },
            "instr_offset": 992,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_Vertex3Ptr"
            },
            "instr_offset": 1002,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_InputProcessedFlag"
            },
            "instr_offset": 906,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_RenderFrameCount"
            },
            "instr_offset": 2973,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_TempVertexColorBlueVertex1"
            },
            "instr_offset": 1979,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_TempVertexColorBlueVertex2"
            },
            "instr_offset": 2173,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_TempVertexColorBlueVertex3"
            },
            "instr_offset": 152,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_TempVertexColorGreenVertex1"
            },
            "instr_offset": 1956,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_TempVertexColorGreenVertex2"
            },
            "instr_offset": 2150,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_TempVertexColorGreenVertex3"
            },
            "instr_offset": 141,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_TempVertexColorRedVertex1"
            },
            "instr_offset": 1937,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_TempVertexColorRedVertex2"
            },
            "instr_offset": 2129,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawQuad_TempVertexColorRedVertex3"
            },
            "instr_offset": 404,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 00 74 ?? 39 3D ??",
          "match_offset": -33
        },
        "docs": "Issues or queues draw work for one transformed polygon batch and returns 1 on normal exit.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 206,
          "symbol_index": 206,
          "accessor": "DTTR_PCDOGS_F_Graphics_DrawQuad",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_DRAW_QUAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_DRAW_QUAD"
        }
      }
    },
    "Graphics_DrawQuad_AltUVOffset": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509768,
            "rva": 315464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 609,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517960,
            "rva": 323656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 609,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517960,
            "rva": 323656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 609,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 609,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 83,
          "symbol_index": 83,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_AltUVOffset",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_ALT_UV_OFFSET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_ALT_UV_OFFSET"
        }
      }
    },
    "Graphics_DrawQuad_InputProcessedFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835916,
            "rva": 641612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844812,
            "rva": 650508,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844796,
            "rva": 650492,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 906,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 906,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 682,
          "symbol_index": 682,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_InputProcessedFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUADINPUT_PROCESSED_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUADINPUT_PROCESSED_FLAG"
        }
      }
    },
    "Graphics_DrawQuad_NegZBias": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509764,
            "rva": 315460,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2764,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517956,
            "rva": 323652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2764,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517956,
            "rva": 323652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2764,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 2764,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 81,
          "symbol_index": 81,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_NegZBias",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_NEG_Z_BIAS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_NEG_Z_BIAS"
        }
      }
    },
    "Graphics_DrawQuad_PosZBias": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509760,
            "rva": 315456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517952,
            "rva": 323648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517952,
            "rva": 323648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 2772,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "float",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_DrawQuad",
          "instr_offset": 2772,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Small positive Z-bias constant loaded by Graphics_DrawQuad; split from the project-screen-height constant at 0x44D038.",
        "sdk": {
          "id": 82,
          "symbol_index": 82,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_PosZBias",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_POS_Z_BIAS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_POS_Z_BIAS"
        }
      }
    },
    "Graphics_DrawQuad_RenderFrameCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506784,
            "rva": 2312480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518048,
            "rva": 2323744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517472,
            "rva": 2323168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 2973,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 774,
          "symbol_index": 774,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_RenderFrameCount",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_RENDER_FRAME_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_RENDER_FRAME_COUNT"
        }
      }
    },
    "Graphics_DrawQuad_TempVertexColorBlueVertex1": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908036,
            "rva": 22713732,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1979,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919300,
            "rva": 22724996,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1979,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918724,
            "rva": 22724420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1979,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 1979,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 869,
          "symbol_index": 869,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_TempVertexColorBlueVertex1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_BLUE_VERTEX1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_BLUE_VERTEX1"
        }
      }
    },
    "Graphics_DrawQuad_TempVertexColorBlueVertex2": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908040,
            "rva": 22713736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2173,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919304,
            "rva": 22725000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2173,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918728,
            "rva": 22724424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2173,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 2173,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 870,
          "symbol_index": 870,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_TempVertexColorBlueVertex2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_BLUE_VERTEX2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_BLUE_VERTEX2"
        }
      }
    },
    "Graphics_DrawQuad_TempVertexColorBlueVertex3": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908044,
            "rva": 22713740,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 152,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919308,
            "rva": 22725004,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 152,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918732,
            "rva": 22724428,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 152,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 152,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 871,
          "symbol_index": 871,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_TempVertexColorBlueVertex3",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_BLUE_VERTEX3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_BLUE_VERTEX3"
        }
      }
    },
    "Graphics_DrawQuad_TempVertexColorGreenVertex1": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908052,
            "rva": 22713748,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1956,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919316,
            "rva": 22725012,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1956,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918740,
            "rva": 22724436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1956,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 1956,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 873,
          "symbol_index": 873,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_TempVertexColorGreenVertex1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_GREEN_VERTEX1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_GREEN_VERTEX1"
        }
      }
    },
    "Graphics_DrawQuad_TempVertexColorGreenVertex2": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908056,
            "rva": 22713752,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2150,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919320,
            "rva": 22725016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2150,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918744,
            "rva": 22724440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2150,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 2150,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 874,
          "symbol_index": 874,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_TempVertexColorGreenVertex2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_GREEN_VERTEX2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_GREEN_VERTEX2"
        }
      }
    },
    "Graphics_DrawQuad_TempVertexColorGreenVertex3": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908060,
            "rva": 22713756,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 141,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919324,
            "rva": 22725020,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 141,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918748,
            "rva": 22724444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 141,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 141,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 875,
          "symbol_index": 875,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_TempVertexColorGreenVertex3",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_GREEN_VERTEX3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_GREEN_VERTEX3"
        }
      }
    },
    "Graphics_DrawQuad_TempVertexColorRedVertex1": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908068,
            "rva": 22713764,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1937,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919332,
            "rva": 22725028,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1937,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918756,
            "rva": 22724452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1937,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 1937,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 877,
          "symbol_index": 877,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_TempVertexColorRedVertex1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_RED_VERTEX1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_RED_VERTEX1"
        }
      }
    },
    "Graphics_DrawQuad_TempVertexColorRedVertex2": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908072,
            "rva": 22713768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919336,
            "rva": 22725032,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918760,
            "rva": 22724456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 2129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 2129,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 878,
          "symbol_index": 878,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_TempVertexColorRedVertex2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_RED_VERTEX2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_RED_VERTEX2"
        }
      }
    },
    "Graphics_DrawQuad_TempVertexColorRedVertex3": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908076,
            "rva": 22713772,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 404,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919340,
            "rva": 22725036,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 404,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918764,
            "rva": 22724460,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 404,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 404,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 879,
          "symbol_index": 879,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_TempVertexColorRedVertex3",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_RED_VERTEX3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_TEMP_VERTEX_COLOR_RED_VERTEX3"
        }
      }
    },
    "Graphics_DrawQuad_UntexturedVertexBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556448,
            "rva": 362144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1261,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564784,
            "rva": 370480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1261,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564768,
            "rva": 370464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1261,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 1261,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 435,
          "symbol_index": 435,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_UntexturedVertexBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_UNTEXTURED_VERTEX_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_UNTEXTURED_VERTEX_BUFFER"
        }
      }
    },
    "Graphics_DrawQuad_UntexturedVertexBufferVertex1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556468,
            "rva": 362164,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1298,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564804,
            "rva": 370500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1298,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564788,
            "rva": 370484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1298,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 1298,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 436,
          "symbol_index": 436,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_UntexturedVertexBufferVertex1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_UNTEXTURED_VERTEX_BUFFER_VERTEX1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_UNTEXTURED_VERTEX_BUFFER_VERTEX1"
        }
      }
    },
    "Graphics_DrawQuad_UntexturedVertexBufferVertex2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556488,
            "rva": 362184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1325,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564824,
            "rva": 370520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1325,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564808,
            "rva": 370504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1325,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 1325,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 437,
          "symbol_index": 437,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_UntexturedVertexBufferVertex2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_UNTEXTURED_VERTEX_BUFFER_VERTEX2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_UNTEXTURED_VERTEX_BUFFER_VERTEX2"
        }
      }
    },
    "Graphics_DrawQuad_UntexturedVertexBufferVertex3": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556508,
            "rva": 362204,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1315,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564844,
            "rva": 370540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1315,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564828,
            "rva": 370524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1315,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 1315,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 438,
          "symbol_index": 438,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_UntexturedVertexBufferVertex3",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_UNTEXTURED_VERTEX_BUFFER_VERTEX3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_UNTEXTURED_VERTEX_BUFFER_VERTEX3"
        }
      }
    },
    "Graphics_DrawQuad_Vertex0": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551456,
            "rva": 357152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 972,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559792,
            "rva": 365488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 972,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559776,
            "rva": 365472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 972,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 972,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 374,
          "symbol_index": 374,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex0",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX0"
        }
      }
    },
    "Graphics_DrawQuad_Vertex0U": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551476,
            "rva": 357172,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 648,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559812,
            "rva": 365508,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 648,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559796,
            "rva": 365492,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 648,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 648,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 375,
          "symbol_index": 375,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex0U",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX0_U",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX0_U"
        }
      }
    },
    "Graphics_DrawQuad_Vertex0V": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551480,
            "rva": 357176,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 669,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559816,
            "rva": 365512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 669,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559800,
            "rva": 365496,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 669,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 669,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 376,
          "symbol_index": 376,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex0V",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX0_V",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX0_V"
        }
      }
    },
    "Graphics_DrawQuad_Vertex1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551484,
            "rva": 357180,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 982,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559820,
            "rva": 365516,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 982,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559804,
            "rva": 365500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 982,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 982,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 377,
          "symbol_index": 377,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX1"
        }
      }
    },
    "Graphics_DrawQuad_Vertex1Ptr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562620,
            "rva": 368316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 982,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570956,
            "rva": 376652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 982,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570940,
            "rva": 376636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 982,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 982,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 463,
          "symbol_index": 463,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex1Ptr",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX1_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX1_PTR"
        }
      }
    },
    "Graphics_DrawQuad_Vertex1U": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551504,
            "rva": 357200,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 692,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559840,
            "rva": 365536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 692,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559824,
            "rva": 365520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 692,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 692,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 378,
          "symbol_index": 378,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex1U",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX1_U",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX1_U"
        }
      }
    },
    "Graphics_DrawQuad_Vertex1V": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551508,
            "rva": 357204,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 713,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559844,
            "rva": 365540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 713,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559828,
            "rva": 365524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 713,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 713,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 379,
          "symbol_index": 379,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex1V",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX1_V",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX1_V"
        }
      }
    },
    "Graphics_DrawQuad_Vertex2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551512,
            "rva": 357208,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 992,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559848,
            "rva": 365544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 992,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559832,
            "rva": 365528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 992,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 992,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 380,
          "symbol_index": 380,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX2"
        }
      }
    },
    "Graphics_DrawQuad_Vertex2Ptr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562624,
            "rva": 368320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 992,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570960,
            "rva": 376656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 992,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570944,
            "rva": 376640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 992,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 992,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 464,
          "symbol_index": 464,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex2Ptr",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX2_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX2_PTR"
        }
      }
    },
    "Graphics_DrawQuad_Vertex2U": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551532,
            "rva": 357228,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 748,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559868,
            "rva": 365564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 748,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559852,
            "rva": 365548,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 748,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 748,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 381,
          "symbol_index": 381,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex2U",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX2_U",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX2_U"
        }
      }
    },
    "Graphics_DrawQuad_Vertex2V": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551536,
            "rva": 357232,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559872,
            "rva": 365568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559856,
            "rva": 365552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 772,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 772,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 382,
          "symbol_index": 382,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex2V",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX2_V",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX2_V"
        }
      }
    },
    "Graphics_DrawQuad_Vertex3": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551540,
            "rva": 357236,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1002,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559876,
            "rva": 365572,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1002,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559860,
            "rva": 365556,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1002,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 1002,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 383,
          "symbol_index": 383,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex3",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX3"
        }
      }
    },
    "Graphics_DrawQuad_Vertex3Ptr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562628,
            "rva": 368324,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1002,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570964,
            "rva": 376660,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1002,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570948,
            "rva": 376644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 1002,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 1002,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 465,
          "symbol_index": 465,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex3Ptr",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX3_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX3_PTR"
        }
      }
    },
    "Graphics_DrawQuad_Vertex3U": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551560,
            "rva": 357256,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 858,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559896,
            "rva": 365592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 858,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559880,
            "rva": 365576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 858,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 858,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 384,
          "symbol_index": 384,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex3U",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX3_U",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX3_U"
        }
      }
    },
    "Graphics_DrawQuad_Vertex3V": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551564,
            "rva": 357260,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559900,
            "rva": 365596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559884,
            "rva": 365580,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 882,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 882,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 385,
          "symbol_index": 385,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_Vertex3V",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX3_V",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX3_V"
        }
      }
    },
    "Graphics_DrawQuad_VertexPtrs": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562616,
            "rva": 368312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 108,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570952,
            "rva": 376648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 108,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570936,
            "rva": 376632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 108,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawQuad"
            },
            "instr_offset": 108,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 462,
          "symbol_index": 462,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawQuad_VertexPtrs",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_QUAD_VERTEX_PTRS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_QUAD_VERTEX_PTRS"
        }
      }
    },
    "Graphics_DrawRectangle": {
      "function": {
        "analysis": {
          "en": {
            "address": 4292160,
            "rva": 97856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 767,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4292624,
            "rva": 98320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 767,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4292624,
            "rva": 98320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenWithColor"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 767,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "packed_origin_xy",
              "type": "int32_t",
              "docs": "Packed signed 16-bit screen x/y origin."
            },
            {
              "name": "packed_size_wh",
              "type": "int32_t",
              "docs": "Packed signed 16-bit width/height added to the origin."
            },
            {
              "name": "blend_flags",
              "type": "int32_t",
              "docs": "Low word is a 0..0x1000 color scale; high bits select blend behavior."
            },
            {
              "name": "rgb_color",
              "type": "uint32_t",
              "docs": "Packed RGB source color; final diffuse alpha is supplied by blend state."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "D3 89 74 24 10 C1 E8 ??",
          "match_offset": -48
        },
        "docs": "Draws a filled screen-space rectangle with Direct3D DrawPrimitive on the game's own UI render path.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 211,
          "symbol_index": 211,
          "accessor": "DTTR_PCDOGS_F_Graphics_DrawRectangle",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_DRAW_RECTANGLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_DRAW_RECTANGLE"
        }
      }
    },
    "Graphics_DrawSortedLists": {
      "function": {
        "analysis": {
          "en": {
            "address": 4377568,
            "rva": 183264,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawSortedLists_CurrentRecord"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawSortedLists_Cursor"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawSortedLists_DebugShowFPSCounter"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 460,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2492,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1537,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4381968,
            "rva": 187664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawSortedLists_CurrentRecord"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawSortedLists_Cursor"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawSortedLists_DebugShowFPSCounter"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 470,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2492,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1537,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4381936,
            "rva": 187632,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawSortedLists_CurrentRecord"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawSortedLists_Cursor"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_DrawSortedLists_DebugShowFPSCounter"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetZWriteEnable"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 470,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2492,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1537,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawSortedLists_Cursor"
            },
            "instr_offset": 10,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawSortedLists_CurrentRecord"
            },
            "instr_offset": 21,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_DrawSortedLists_DebugShowFPSCounter"
            },
            "instr_offset": 159,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 05 CC",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 376,
          "symbol_index": 376,
          "accessor": "DTTR_PCDOGS_F_Graphics_DrawSortedLists",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_DRAW_SORTED_LISTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_DRAW_SORTED_LISTS"
        }
      }
    },
    "Graphics_DrawSortedLists_CurrentRecord": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831968,
            "rva": 637664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840872,
            "rva": 646568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840856,
            "rva": 646552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawSortedLists"
            },
            "instr_offset": 21,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 602,
          "symbol_index": 602,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawSortedLists_CurrentRecord",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_SORTED_LISTS_CURRENT_RECORD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_SORTED_LISTS_CURRENT_RECORD"
        }
      }
    },
    "Graphics_DrawSortedLists_Cursor": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831964,
            "rva": 637660,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840868,
            "rva": 646564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840852,
            "rva": 646548,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawSortedLists"
            },
            "instr_offset": 10,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 601,
          "symbol_index": 601,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawSortedLists_Cursor",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_SORTED_LISTS_CURSOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_SORTED_LISTS_CURSOR"
        }
      }
    },
    "Graphics_DrawSortedLists_DebugShowFPSCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835892,
            "rva": 641588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844788,
            "rva": 650484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844772,
            "rva": 650468,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_DrawSortedLists"
            },
            "instr_offset": 159,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 678,
          "symbol_index": 678,
          "accessor": "DTTR_PCDOGS_D_Graphics_DrawSortedLists_DebugShowFPSCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_DRAW_SORTED_LISTS_DEBUG_SHOW_FPS_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_DRAW_SORTED_LISTS_DEBUG_SHOW_FPS_COUNTER"
        }
      }
    },
    "Graphics_EndRendering": {
      "function": {
        "analysis": {
          "en": {
            "address": 4377952,
            "rva": 183648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_HasFogCapability"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 508,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 926,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 987,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 1013,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3937,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 417,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 618,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1564,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 448,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 1353,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 1479,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E4 BA 49 00 75 0E E8 ??",
          "match_offset": -12
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 380,
          "symbol_index": 380,
          "accessor": "DTTR_PCDOGS_F_Graphics_EndRendering",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_END_RENDERING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_END_RENDERING"
        }
      }
    },
    "Graphics_FloatColorRGB": {
      "type": {
        "members": [
          {
            "type": "float",
            "name": "r",
            "offset": 0,
            "doc": null
          },
          {
            "type": "float",
            "name": "g",
            "offset": 4,
            "doc": null
          },
          {
            "type": "float",
            "name": "b",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_FloatColorRGB"
        }
      }
    },
    "Graphics_FreeTextureBlend": {
      "function": {
        "analysis": {
          "en": {
            "address": 4378032,
            "rva": 183728,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 646,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4382464,
            "rva": 188160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 672,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4382432,
            "rva": 188128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseSingleTexture"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 672,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "blend_textures",
              "type": "Material_BlendTextureSet*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 8B 06 50 E8 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 383,
          "symbol_index": 383,
          "accessor": "DTTR_PCDOGS_F_Graphics_FreeTextureBlend",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_FREE_TEXTURE_BLEND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_FREE_TEXTURE_BLEND"
        }
      }
    },
    "Graphics_FrustumClipPlane": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "distance",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "normal",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "padding_0a",
            "offset": 10,
            "doc": "Alignment/pad word in the frustum/clip-plane record."
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Graphics_ListState frustum/clip-plane record, used by actor visibility checks.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_FrustumClipPlane"
        }
      }
    },
    "Graphics_GradientState": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "start_color",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "end_color",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_GradientState"
        }
      }
    },
    "Graphics_HasFogCapability": {
      "function": {
        "analysis": {
          "en": {
            "address": 4448160,
            "rva": 253856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4453424,
            "rva": 259120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4453392,
            "rva": 259088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 25 00",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 528,
          "symbol_index": 528,
          "accessor": "DTTR_PCDOGS_F_Graphics_HasFogCapability",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_HAS_FOG_CAPABILITY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_HAS_FOG_CAPABILITY"
        }
      }
    },
    "Graphics_IncrementPassCounter": {
      "function": {
        "analysis": {
          "en": {
            "address": 4377920,
            "rva": 183616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_IncrementPassCounter_RenderingFrameCounter"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 261,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 587,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 531,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1390,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 419,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_IncrementPassCounter_RenderingFrameCounter"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_IncrementPassCounter_RenderingFrameCounter"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_IncrementPassCounter_RenderingFrameCounter"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E4 BA 49 00 75 05 E9 ??",
          "match_offset": -12
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 379,
          "symbol_index": 379,
          "accessor": "DTTR_PCDOGS_F_Graphics_IncrementPassCounter",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_INCREMENT_PASS_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_INCREMENT_PASS_COUNTER"
        }
      }
    },
    "Graphics_IncrementPassCounter_RenderingFrameCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831972,
            "rva": 637668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_IncrementPassCounter"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 603,
          "symbol_index": 603,
          "accessor": "DTTR_PCDOGS_D_Graphics_IncrementPassCounter_RenderingFrameCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_INCREMENT_PASS_COUNTER_RENDERING_FRAME_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_INCREMENT_PASS_COUNTER_RENDERING_FRAME_COUNTER"
        }
      }
    },
    "Graphics_InitializeColorGradient": {
      "function": {
        "analysis": {
          "en": {
            "address": 4375472,
            "rva": 181168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4379168,
            "rva": 184864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4379136,
            "rva": 184832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char",
          "params": [
            {
              "name": "gradient_state",
              "type": "char*"
            },
            {
              "name": "start_color",
              "type": "int32_t"
            },
            {
              "name": "end_color",
              "type": "int32_t"
            },
            {
              "name": "steps",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "88 06 88 4E 03 C1 E8 ??",
          "match_offset": -18
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 368,
          "symbol_index": 368,
          "accessor": "DTTR_PCDOGS_F_Graphics_InitializeColorGradient",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_INITIALIZE_COLOR_GRADIENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_INITIALIZE_COLOR_GRADIENT"
        }
      }
    },
    "Graphics_InitializeDispatchTables": {
      "function": {
        "analysis": {
          "en": {
            "address": 4469424,
            "rva": 275120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_DefaultUpdateCallbackSlot"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorParam0"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorParam1"
                },
                "instr_offset": 69,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorParam2"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorTargetActor"
                },
                "instr_offset": 49,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4476640,
            "rva": 282336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_DefaultUpdateCallbackSlot"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorParam0"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorParam1"
                },
                "instr_offset": 69,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorParam2"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorTargetActor"
                },
                "instr_offset": 49,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4476576,
            "rva": 282272,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_DefaultUpdateCallbackSlot"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorParam0"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorParam1"
                },
                "instr_offset": 69,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorParam2"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_InitializeDispatchTables_BehaviorTargetActor"
                },
                "instr_offset": 49,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetViewport"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Actor_DefaultUpdateCallbackSlot"
            },
            "instr_offset": 29,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_InitializeDispatchTables_BehaviorTargetActor"
            },
            "instr_offset": 49,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_InitializeDispatchTables_BehaviorParam0"
            },
            "instr_offset": 59,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_InitializeDispatchTables_BehaviorParam1"
            },
            "instr_offset": 69,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_InitializeDispatchTables_BehaviorParam2"
            },
            "instr_offset": 79,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "6A 00 E8 ?? ?? ?? ?? B8",
          "match_offset": -14
        },
        "docs": "Initializes render/behavior dispatch globals after setting the default 640x480 camera viewport: actor_default_update_handler, movement_handler_table, model_physics_callback_table, behavior_target_actor, and behavior_param0..2, then builds direction/collision plane tables.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 605,
          "symbol_index": 605,
          "accessor": "DTTR_PCDOGS_F_Graphics_InitializeDispatchTables",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_INITIALIZE_DISPATCH_TABLES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_INITIALIZE_DISPATCH_TABLES"
        }
      }
    },
    "Graphics_InitializeDispatchTables_BehaviorParam0": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505652,
            "rva": 2311348,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515892,
            "rva": 2321588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515316,
            "rva": 2321012,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_InitializeDispatchTables"
            },
            "instr_offset": 59,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_BehaviorCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_InitializeDispatchTables",
          "instr_offset": 59,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Behavior/movement callback slot initialized to Actor_ProcessMovementCommands by Graphics_InitializeDispatchTables.",
        "sdk": {
          "id": 758,
          "symbol_index": 758,
          "accessor": "DTTR_PCDOGS_D_Graphics_InitializeDispatchTables_BehaviorParam0",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_INITIALIZE_DISPATCH_TABLES_BEHAVIOR_PARAM0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_INITIALIZE_DISPATCH_TABLES_BEHAVIOR_PARAM0"
        }
      }
    },
    "Graphics_InitializeDispatchTables_BehaviorParam1": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505656,
            "rva": 2311352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 69,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515896,
            "rva": 2321592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 69,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515320,
            "rva": 2321016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 69,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_InitializeDispatchTables"
            },
            "instr_offset": 69,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_BehaviorCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_InitializeDispatchTables",
          "instr_offset": 69,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Behavior/movement callback slot initialized to Actor_FollowAttachedMovement by Graphics_InitializeDispatchTables.",
        "sdk": {
          "id": 759,
          "symbol_index": 759,
          "accessor": "DTTR_PCDOGS_D_Graphics_InitializeDispatchTables_BehaviorParam1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_INITIALIZE_DISPATCH_TABLES_BEHAVIOR_PARAM1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_INITIALIZE_DISPATCH_TABLES_BEHAVIOR_PARAM1"
        }
      }
    },
    "Graphics_InitializeDispatchTables_BehaviorParam2": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505660,
            "rva": 2311356,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515900,
            "rva": 2321596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515324,
            "rva": 2321020,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_InitializeDispatchTables"
            },
            "instr_offset": 79,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_BehaviorCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_InitializeDispatchTables",
          "instr_offset": 79,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Behavior/movement callback slot initialized to Actor_ProcessMovementBehavior by Graphics_InitializeDispatchTables.",
        "sdk": {
          "id": 760,
          "symbol_index": 760,
          "accessor": "DTTR_PCDOGS_D_Graphics_InitializeDispatchTables_BehaviorParam2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_INITIALIZE_DISPATCH_TABLES_BEHAVIOR_PARAM2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_INITIALIZE_DISPATCH_TABLES_BEHAVIOR_PARAM2"
        }
      }
    },
    "Graphics_InitializeDispatchTables_BehaviorTargetActor": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505648,
            "rva": 2311344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 49,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515888,
            "rva": 2321584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 49,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515312,
            "rva": 2321008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 49,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_InitializeDispatchTables"
            },
            "instr_offset": 49,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_BehaviorCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_InitializeDispatchTables",
          "instr_offset": 49,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Behavior/movement callback slot initialized to Actor_ApplyVerticalMovement by Graphics_InitializeDispatchTables.",
        "sdk": {
          "id": 757,
          "symbol_index": 757,
          "accessor": "DTTR_PCDOGS_D_Graphics_InitializeDispatchTables_BehaviorTargetActor",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_INITIALIZE_DISPATCH_TABLES_BEHAVIOR_TARGET_ACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_INITIALIZE_DISPATCH_TABLES_BEHAVIOR_TARGET_ACTOR"
        }
      }
    },
    "Graphics_InitializeSubsystem": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4446016,
            "rva": 251712,
            "image_base": 4194304
          },
          "eu": {
            "address": 4451280,
            "rva": 256976,
            "image_base": 4194304
          },
          "sc": {
            "address": 4451248,
            "rva": 256944,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "E8 ?? ?? ?? ?? 8B 44 24 ?? 8B 4C 24 ?? 50"
      }
    },
    "Graphics_InitializeTextureBlendTextures": {
      "function": {
        "analysis": {
          "en": {
            "address": 4378016,
            "rva": 183712,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4382448,
            "rva": 188144,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4382416,
            "rva": 188112,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Material_BlendTextureSet*",
          "params": [
            {
              "name": "resource_data",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 50 E8 ?? ?? ?? ?? 83 C4 04 C3",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 382,
          "symbol_index": 382,
          "accessor": "DTTR_PCDOGS_F_Graphics_InitializeTextureBlendTextures",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_INITIALIZE_TEXTURE_BLEND_TEXTURES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_INITIALIZE_TEXTURE_BLEND_TEXTURES"
        }
      }
    },
    "Graphics_IsPolygonInDebugList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4316304,
            "rva": 122000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListBases"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListCount"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListCounts"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6878,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4316784,
            "rva": 122480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListBases"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListCount"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListCounts"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6878,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4316784,
            "rva": 122480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListBases"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListCount"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Collision_DebugPolygonListCounts"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6878,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "polygon_ref",
              "type": "Graphics_PolygonRenderRef*",
              "docs": "Polygon render-reference address compared against the debug polygon buckets."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Collision_DebugPolygonListCount"
            },
            "instr_offset": 12,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_DebugPolygonListCounts"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Collision_DebugPolygonListBases"
            },
            "instr_offset": 39,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 53 56 57 85 C0 7E",
          "match_offset": 0
        },
        "docs": "Returns 1 when polygon_ref is present in any active debug polygon bucket; buckets are Graphics_PolygonRenderRef entries.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 274,
          "symbol_index": 274,
          "accessor": "DTTR_PCDOGS_F_Graphics_IsPolygonInDebugList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_IS_POLYGON_IN_DEBUG_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_IS_POLYGON_IN_DEBUG_LIST"
        }
      }
    },
    "Graphics_ListState": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "pose_state_flags",
            "offset": 0,
            "doc": "Camera pose/state flag word (previously misread as a yaw angle)."
          },
          {
            "type": "int16_t",
            "name": "pitch",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "look_pitch",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "look_yaw",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "view_roll",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "fov",
            "offset": 10,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "focal_distance",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_Vec3I32XZY",
            "name": "eye_pos",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Math_Vec3I32XZY",
            "name": "target_pos",
            "offset": 28,
            "doc": null
          },
          {
            "type": "Entity_State*",
            "name": "active_entity_slot_ptr",
            "offset": 40,
            "doc": null
          },
          {
            "type": "Math_SizeI16",
            "name": "screen_half",
            "offset": 44,
            "doc": "This holds the full display-mode size (640x480)"
          },
          {
            "type": "Camera_FrustumDirTable",
            "name": "frustum_dirs",
            "offset": 48,
            "doc": "Five int16 frustum direction triples (stride 8) written by Camera_BuildViewMatrix; previously misread as a view matrix plus setup prefix."
          },
          {
            "type": "Graphics_FrustumClipPlane",
            "name": "frustum_planes[5]",
            "offset": 88,
            "doc": "Five plane records written by Scene_RenderFrame and read by Graphics_CheckActorVisibilityAndFrustum."
          },
          {
            "type": "Math_Matrix3x3I16",
            "name": "node_view_matrix",
            "offset": 148,
            "doc": "Per-node camera basis matrix in the engine's native int16 3x3 format."
          },
          {
            "type": "int16_t",
            "name": "node_view_matrix_padding",
            "offset": 166,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "node_view_translation",
            "offset": 168,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "projection_near_fp",
            "offset": 180,
            "doc": "Fixed-point near-plane threshold."
          },
          {
            "type": "int32_t",
            "name": "dynamic_level_scale",
            "offset": 184,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "render_actor_ptr",
            "offset": 188,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "render_pass_flags",
            "offset": 192,
            "doc": null
          },
          {
            "type": "void*",
            "name": "post_sorted_callback",
            "offset": 196,
            "doc": null
          },
          {
            "type": "void*",
            "name": "pre_shadow_callback",
            "offset": 200,
            "doc": null
          },
          {
            "type": "void*",
            "name": "sorted_list_head",
            "offset": 204,
            "doc": null
          },
          {
            "type": "void*",
            "name": "sorted_list_buckets[16384]",
            "offset": 208,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "sorted_bucket_tail",
            "offset": 65744,
            "doc": "End/tail dword after the 16384 sorted bucket pointers."
          },
          {
            "type": "uint16_t",
            "name": "shake_countdown",
            "offset": 65748,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "shake_intensity",
            "offset": 65750,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "roll_effect_countdown",
            "offset": 65752,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "roll_effect_duration",
            "offset": 65754,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "roll_effect_magnitude",
            "offset": 65756,
            "doc": "Peak roll angle applied by Camera_UpdateRollEffect while the effect runs."
          }
        ],
        "size": 65758,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Runtime state for the camera and render lists, including five frustum planes and the camera shake/roll-effect tail. eye_pos and target_pos use Math_Vec3I32XZY storage.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_ListState"
        }
      }
    },
    "Graphics_LoadAndUploadTexture": {
      "function": {
        "analysis": {
          "en": {
            "address": 4274944,
            "rva": 80640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_ErrorString"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_PKGLoadingScreenTexture"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexErrTex0Null"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexErrTex1Null"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexErrTex2Null"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexNeedsAlpha"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeTextureBlendTextures"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4275424,
            "rva": 81120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_ErrorString"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_PKGLoadingScreenTexture"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexErrTex0Null"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexErrTex1Null"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexErrTex2Null"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexNeedsAlpha"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeTextureBlendTextures"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4275424,
            "rva": 81120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_ErrorString"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_PKGLoadingScreenTexture"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexErrTex0Null"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexErrTex1Null"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexErrTex2Null"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_LoadAndUploadTexture_TexNeedsAlpha"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BlitTextureToQuadrants"
                },
                "instr_offset": 212,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_InitializeTextureBlendTextures"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Material_BlendTextureSet*",
          "params": [
            {
              "name": "pixel_data",
              "type": "uint8_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_LoadAndUploadTexture_TexErrTex2Null"
            },
            "instr_offset": 129,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_LoadAndUploadTexture_TexErrTex1Null"
            },
            "instr_offset": 84,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_LoadAndUploadTexture_TexErrTex0Null"
            },
            "instr_offset": 39,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_LoadAndUploadTexture_ErrorString"
            },
            "instr_offset": 34,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_LoadAndUploadTexture_PKGLoadingScreenTexture"
            },
            "instr_offset": 25,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_LoadAndUploadTexture_TexNeedsAlpha"
            },
            "instr_offset": 10,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "05 ?? ?? ?? ?? 00 E8 ?? ?? ?? ?? 83 C4 08 A3 ?? ?? ?? ?? 85 C0 75 ??",
          "match_offset": -11
        },
        "docs": "Creates the four loading-screen texture quadrants and uploads a 640x480 RGBx source buffer into them.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 188,
          "symbol_index": 188,
          "accessor": "DTTR_PCDOGS_F_Graphics_LoadAndUploadTexture",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE"
        }
      }
    },
    "Graphics_LoadAndUploadTexture_ErrorString": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515192,
            "rva": 320888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523384,
            "rva": 329080,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523384,
            "rva": 329080,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_LoadAndUploadTexture"
            },
            "instr_offset": 34,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 128,
          "symbol_index": 128,
          "accessor": "DTTR_PCDOGS_D_Graphics_LoadAndUploadTexture_ErrorString",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_ERROR_STRING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_ERROR_STRING"
        }
      }
    },
    "Graphics_LoadAndUploadTexture_PKGLoadingScreenTexture": {
      "data": {
        "analysis": {
          "en": {
            "address": 4555960,
            "rva": 361656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564296,
            "rva": 369992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564280,
            "rva": 369976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_LoadAndUploadTexture"
            },
            "instr_offset": 25,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Material_BlendTextureSet",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_LoadAndUploadTexture",
          "instr_offset": 25,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "sdk": {
          "id": 422,
          "symbol_index": 422,
          "accessor": "DTTR_PCDOGS_D_Graphics_LoadAndUploadTexture_PKGLoadingScreenTexture",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_PKG_LOADING_SCREEN_TEXTURE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_PKG_LOADING_SCREEN_TEXTURE"
        }
      }
    },
    "Graphics_LoadAndUploadTexture_TexErrTex0Null": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515172,
            "rva": 320868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523364,
            "rva": 329060,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523364,
            "rva": 329060,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_LoadAndUploadTexture"
            },
            "instr_offset": 39,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 127,
          "symbol_index": 127,
          "accessor": "DTTR_PCDOGS_D_Graphics_LoadAndUploadTexture_TexErrTex0Null",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_TEX_ERR_TEX0_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_TEX_ERR_TEX0_NULL"
        }
      }
    },
    "Graphics_LoadAndUploadTexture_TexErrTex1Null": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515152,
            "rva": 320848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523344,
            "rva": 329040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523344,
            "rva": 329040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_LoadAndUploadTexture"
            },
            "instr_offset": 84,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 126,
          "symbol_index": 126,
          "accessor": "DTTR_PCDOGS_D_Graphics_LoadAndUploadTexture_TexErrTex1Null",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_TEX_ERR_TEX1_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_TEX_ERR_TEX1_NULL"
        }
      }
    },
    "Graphics_LoadAndUploadTexture_TexErrTex2Null": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515132,
            "rva": 320828,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523324,
            "rva": 329020,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523324,
            "rva": 329020,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_LoadAndUploadTexture"
            },
            "instr_offset": 129,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 125,
          "symbol_index": 125,
          "accessor": "DTTR_PCDOGS_D_Graphics_LoadAndUploadTexture_TexErrTex2Null",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_TEX_ERR_TEX2_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_TEX_ERR_TEX2_NULL"
        }
      }
    },
    "Graphics_LoadAndUploadTexture_TexNeedsAlpha": {
      "data": {
        "analysis": {
          "en": {
            "address": 4562637,
            "rva": 368333,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4570973,
            "rva": 376669,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4570957,
            "rva": 376653,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_LoadAndUploadTexture"
                },
                "instr_offset": 10,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_LoadAndUploadTexture"
            },
            "instr_offset": 10,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_LoadAndUploadTexture",
          "instr_offset": 10,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "sdk": {
          "id": 468,
          "symbol_index": 468,
          "accessor": "DTTR_PCDOGS_D_Graphics_LoadAndUploadTexture_TexNeedsAlpha",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_TEX_NEEDS_ALPHA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_LOAD_AND_UPLOAD_TEXTURE_TEX_NEEDS_ALPHA"
        }
      }
    },
    "Graphics_Polygon": {
      "type": {
        "members": [
          {
            "type": "Material_Entry*",
            "name": "material",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "vertex_indices[4]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Mesh_FaceNormal*",
            "name": "face_normal",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "padding",
            "offset": 18,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "uv_indices[4]",
            "offset": 20,
            "doc": null
          }
        ],
        "size": 28,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_Polygon"
        }
      }
    },
    "Graphics_Polygon3D": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "vertex_indices_front[3]",
            "offset": 0,
            "doc": "Storage-order vertex indices before the interleaved flags field."
          },
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 6,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "vertex_indices_after_flags[1]",
            "offset": 8,
            "doc": "Final storage-order vertex index after flags."
          },
          {
            "type": "uint16_t",
            "name": "material_index",
            "offset": 10,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_Polygon3D"
        }
      }
    },
    "Graphics_PolygonBatchRecord": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "DDraw_IDirectDrawSurface7*",
            "name": "texture_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_tint",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "tex_wrap_mode",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Graphics_PolygonBatchRecord*",
            "name": "next_in_bucket",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Graphics_Render_ScreenVertexI16Z",
            "name": "screen_vertices[4]",
            "offset": 20,
            "doc": null
          },
          {
            "type": "Math_Vec3F",
            "name": "view_vertices[4]",
            "offset": 52,
            "doc": null
          },
          {
            "type": "float",
            "name": "depth_bias",
            "offset": 100,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "face_normal_dot",
            "offset": 104,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "vertex_colors[4]",
            "offset": 108,
            "doc": null
          },
          {
            "type": "Math_UV8",
            "name": "tex_uvs[4]",
            "offset": 124,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "render_state_flags",
            "offset": 132,
            "doc": null
          }
        ],
        "size": 136,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_PolygonBatchRecord"
        }
      }
    },
    "Graphics_PolygonRenderRef": {
      "type": {
        "members": [
          {
            "type": "Material_TableEntry*",
            "name": "material_entry",
            "offset": 0,
            "doc": "Runtime material-table entry pointer read by Graphics_RenderPolygonBatch/Graphics_SetPolygonUVs."
          },
          {
            "type": "uint16_t",
            "name": "vertex_indices[4]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "normal_offset",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "uv_index",
            "offset": 18,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "depth_bias",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "depth_bias_q12",
            "offset": 22,
            "doc": "Fixed-point companion to depth_bias in polygon render refs; used as depth-bias data for render ref records."
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_PolygonRenderRef"
        }
      }
    },
    "Graphics_ProcessMeshCommands": {
      "function": {
        "analysis": {
          "en": {
            "address": 4273104,
            "rva": 78800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ProcessMeshCommands_Capabilities"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessVertexColor"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 808,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 1658,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4273584,
            "rva": 79280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ProcessMeshCommands_Capabilities"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessVertexColor"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 845,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 2393,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4273584,
            "rva": 79280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_ProcessMeshCommands_Capabilities"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessVertexColor"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 845,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 2379,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "cmd_list",
              "type": "Mesh_CmdList*"
            },
            {
              "name": "controller_data",
              "type": "int32_t*"
            },
            {
              "name": "owner_context",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_ProcessMeshCommands_Capabilities"
            },
            "instr_offset": 59,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "06 33 C9 8A 08 83 E9 ??",
          "match_offset": -46
        },
        "docs": "Processes dirty mesh command entries, advancing animation/controller state and vertex-color commands.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 182,
          "symbol_index": 182,
          "accessor": "DTTR_PCDOGS_F_Graphics_ProcessMeshCommands",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_PROCESS_MESH_COMMANDS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_PROCESS_MESH_COMMANDS"
        }
      }
    },
    "Graphics_ProcessMeshCommands_Capabilities": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505704,
            "rva": 2311400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515940,
            "rva": 2321636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515364,
            "rva": 2321060,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 59,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ProcessMeshCommands"
            },
            "instr_offset": 59,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 768,
          "symbol_index": 768,
          "accessor": "DTTR_PCDOGS_D_Graphics_ProcessMeshCommands_Capabilities",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_PROCESS_MESH_COMMANDS_CAPABILITIES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_PROCESS_MESH_COMMANDS_CAPABILITIES"
        }
      }
    },
    "Graphics_ProjectScreenHeightHalf": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509752,
            "rva": 315448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1622,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517944,
            "rva": 323640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1622,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517944,
            "rva": 323640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1622,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipAndDrawPolygon"
            },
            "instr_offset": 1622,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "float",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_ClipAndDrawPolygon",
          "instr_offset": 1622,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Float constant 240.0, half of the fixed 480-pixel projection/screen height used by clipping math.",
        "sdk": {
          "id": 79,
          "symbol_index": 79,
          "accessor": "DTTR_PCDOGS_D_Graphics_ProjectScreenHeightHalf",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_PROJECT_SCREEN_HEIGHT_HALF",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_PROJECT_SCREEN_HEIGHT_HALF"
        }
      }
    },
    "Graphics_ProjectedVertex": {
      "type": {
        "members": [
          {
            "type": "Math_ScreenPointI16",
            "name": "screen",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "z",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_ProjectedVertex"
        }
      }
    },
    "Graphics_QuadData": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "material_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "color",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "texture_width",
            "offset": 12,
            "doc": "Quad texture width byte read by Graphics_DrawQuad/quad rendering paths."
          },
          {
            "type": "uint8_t",
            "name": "texture_height",
            "offset": 13,
            "doc": "Quad texture height byte read by Graphics_DrawQuad/quad rendering paths."
          },
          {
            "type": "uint16_t",
            "name": "quad_padding",
            "offset": 14,
            "doc": "Reserved word between texture dimensions and quad_state. Graphics_DrawQuad reads texture dimensions before using quad_state."
          },
          {
            "type": "uint32_t",
            "name": "quad_state",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "vertex_x[4]",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "vertex_y[4]",
            "offset": 28,
            "doc": null
          },
          {
            "type": "float",
            "name": "vertex_z[4]",
            "offset": 36,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "quad_type",
            "offset": 52,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "vertex_data[16]",
            "offset": 56,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "texture_coords[16]",
            "offset": 120,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "vertex_colors[4]",
            "offset": 136,
            "doc": null
          }
        ],
        "size": 152,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_QuadData"
        }
      }
    },
    "Graphics_QuadRenderData": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "render_flags[5]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Graphics_ProjectedVertex",
            "name": "projected_vertices[3]",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "vertex_3_screen_x",
            "offset": 44,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "vertex_3_screen_y",
            "offset": 46,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "sort_data[2]",
            "offset": 48,
            "doc": null
          },
          {
            "type": "float",
            "name": "vertex_0_x",
            "offset": 56,
            "doc": null
          },
          {
            "type": "float",
            "name": "vertex_0_z",
            "offset": 60,
            "doc": null
          },
          {
            "type": "float",
            "name": "vertex_0_y",
            "offset": 64,
            "doc": null
          },
          {
            "type": "float",
            "name": "vertex_1_x",
            "offset": 68,
            "doc": null
          },
          {
            "type": "float",
            "name": "vertex_1_z",
            "offset": 72,
            "doc": null
          },
          {
            "type": "float",
            "name": "vertex_1_y",
            "offset": 76,
            "doc": null
          },
          {
            "type": "float",
            "name": "vertex_2_x",
            "offset": 80,
            "doc": null
          },
          {
            "type": "float",
            "name": "vertex_2_y",
            "offset": 84,
            "doc": null
          },
          {
            "type": "float",
            "name": "vertex_3_z",
            "offset": 88,
            "doc": null
          },
          {
            "type": "float",
            "name": "z_offset",
            "offset": 92,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "depth_bias_sign",
            "offset": 96,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "vertex_tint",
            "offset": 100,
            "doc": null
          }
        ],
        "size": 104,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_QuadRenderData"
        }
      }
    },
    "Graphics_RGB555Palette": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "colors[256]",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 512,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_RGB555Palette"
        }
      }
    },
    "Graphics_RenderAllShadows": {
      "function": {
        "analysis": {
          "en": {
            "address": 4435600,
            "rva": 241296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_CheckActorGround"
                },
                "instr_offset": 2764,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckActorVisibilityAndFrustum"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2267,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2494,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1450,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4440672,
            "rva": 246368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_CheckActorGround"
                },
                "instr_offset": 2764,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckActorVisibilityAndFrustum"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2267,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2494,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1450,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4440640,
            "rva": 246336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_CheckActorGround"
                },
                "instr_offset": 2764,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckActorVisibilityAndFrustum"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2267,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2494,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1450,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "7E ?? 6A 00 51 57 E8 ??",
          "match_offset": -43
        },
        "docs": "Renders queued shadows; Scene_RenderFrame calls it for side effects and ignores render-list status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 488,
          "symbol_index": 488,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderAllShadows",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_ALL_SHADOWS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_ALL_SHADOWS"
        }
      }
    },
    "Graphics_RenderFrame": {
      "function": {
        "analysis": {
          "en": {
            "address": 4448416,
            "rva": 254112,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_D3DErrBeginScene"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_D3DErrRestoreAllSurfaces"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_DebugFPSAccumulatedFrameTime"
                },
                "instr_offset": 460,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_DebugFPSFrameCount"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_EndTimeSec"
                },
                "instr_offset": 450,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_Index"
                },
                "instr_offset": 290,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_LastFrameTick"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_StartTimeSec"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 546,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetGameTime"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetGameTime"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4453680,
            "rva": 259376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_D3DErrBeginScene"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_D3DErrRestoreAllSurfaces"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_DebugFPSAccumulatedFrameTime"
                },
                "instr_offset": 460,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_DebugFPSFrameCount"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_EndTimeSec"
                },
                "instr_offset": 450,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_Index"
                },
                "instr_offset": 290,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_LastFrameTick"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_StartTimeSec"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 546,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetGameTime"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetGameTime"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4453648,
            "rva": 259344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_D3DErrBeginScene"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_D3DErrRestoreAllSurfaces"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_DebugFPSAccumulatedFrameTime"
                },
                "instr_offset": 460,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_DebugFPSFrameCount"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_EndTimeSec"
                },
                "instr_offset": 450,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_Index"
                },
                "instr_offset": 290,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_LastFrameTick"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderFrame_StartTimeSec"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_AdjustLevelScale"
                },
                "instr_offset": 546,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetGameTime"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetGameTime"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_ProcessInputAndRender"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint8_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderFrame_D3DErrBeginScene"
            },
            "instr_offset": 121,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderFrame_D3DErrRestoreAllSurfaces"
            },
            "instr_offset": 82,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderFrame_LastFrameTick"
            },
            "instr_offset": 165,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderFrame_StartTimeSec"
            },
            "instr_offset": 14,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderFrame_EndTimeSec"
            },
            "instr_offset": 450,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderFrame_DebugFPSAccumulatedFrameTime"
            },
            "instr_offset": 460,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderFrame_DebugFPSFrameCount"
            },
            "instr_offset": 491,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderFrame_Index"
            },
            "instr_offset": 290,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 53 E8 ?? ?? ?? ?? A1",
          "match_offset": 0
        },
        "docs": "Main frame step: begins/ends the D3D scene, runs Game_UpdateAndRenderScene, handles surface restore/flip, enforces the 30 FPS limiter, and updates FPS counters. Return is an AL status byte: 1 when the frame was skipped/aborted, otherwise 0.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 16,
          "symbol_index": 16,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderFrame",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_FRAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_FRAME"
        }
      },
      "signature": {
        "analysis": {
          "en": {
            "address": 4448416,
            "rva": 254112,
            "image_base": 4194304
          },
          "eu": {
            "address": 4453680,
            "rva": 259376,
            "image_base": 4194304
          },
          "sc": {
            "address": 4453648,
            "rva": 259344,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "51 53 E8 ?? ?? ?? ?? A1"
      }
    },
    "Graphics_RenderFrame_D3DErrBeginScene": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528108,
            "rva": 333804,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536304,
            "rva": 342000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536304,
            "rva": 342000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderFrame"
            },
            "instr_offset": 121,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 282,
          "symbol_index": 282,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderFrame_D3DErrBeginScene",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_FRAME_D3D_ERR_BEGIN_SCENE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_FRAME_D3D_ERR_BEGIN_SCENE"
        }
      }
    },
    "Graphics_RenderFrame_D3DErrRestoreAllSurfaces": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528136,
            "rva": 333832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536332,
            "rva": 342028,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536332,
            "rva": 342028,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderFrame"
            },
            "instr_offset": 82,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 283,
          "symbol_index": 283,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderFrame_D3DErrRestoreAllSurfaces",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_FRAME_D3D_ERR_RESTORE_ALL_SURFACES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_FRAME_D3D_ERR_RESTORE_ALL_SURFACES"
        }
      }
    },
    "Graphics_RenderFrame_DebugFPSAccumulatedFrameTime": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835932,
            "rva": 641628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 460,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844828,
            "rva": 650524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 460,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844812,
            "rva": 650508,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 460,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderFrame"
            },
            "instr_offset": 460,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "float",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_RenderFrame",
          "instr_offset": 460,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Accumulated frame-time seconds used with fps_frame_count to refresh current_fps.",
        "sdk": {
          "id": 686,
          "symbol_index": 686,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderFrame_DebugFPSAccumulatedFrameTime",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_FRAME_DEBUG_FPS_ACCUMULATED_FRAME_TIME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_FRAME_DEBUG_FPS_ACCUMULATED_FRAME_TIME"
        }
      }
    },
    "Graphics_RenderFrame_DebugFPSFrameCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835936,
            "rva": 641632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844832,
            "rva": 650528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844816,
            "rva": 650512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderFrame"
            },
            "instr_offset": 491,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_RenderFrame",
          "instr_offset": 491,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Number of frames accumulated since the last current_fps refresh.",
        "sdk": {
          "id": 687,
          "symbol_index": 687,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderFrame_DebugFPSFrameCount",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_FRAME_DEBUG_FPS_FRAME_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_FRAME_DEBUG_FPS_FRAME_COUNT"
        }
      }
    },
    "Graphics_RenderFrame_EndTimeSec": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835924,
            "rva": 641620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 450,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844820,
            "rva": 650516,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 450,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844804,
            "rva": 650500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 450,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderFrame"
            },
            "instr_offset": 450,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "float",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_RenderFrame",
          "instr_offset": 450,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Timer_GetGameTime value captured after rendering/flip handling in Graphics_RenderFrame.",
        "sdk": {
          "id": 684,
          "symbol_index": 684,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderFrame_EndTimeSec",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_FRAME_END_TIME_SEC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_FRAME_END_TIME_SEC"
        }
      }
    },
    "Graphics_RenderFrame_Index": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506872,
            "rva": 2312568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 290,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518136,
            "rva": 2323832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 290,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517560,
            "rva": 2323256,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 290,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderFrame"
            },
            "instr_offset": 290,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 781,
          "symbol_index": 781,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderFrame_Index",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_FRAME_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_FRAME_INDEX"
        }
      }
    },
    "Graphics_RenderFrame_LastFrameTick": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835908,
            "rva": 641604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844804,
            "rva": 650500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844788,
            "rva": 650484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderFrame"
            },
            "instr_offset": 165,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_RenderFrame",
          "instr_offset": 165,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Timer_GetElapsedTickCount value captured when Graphics_RenderFrame last passed its internal 33 ms frame limiter. Writable so callers pacing the game themselves can rewind it and keep the limiter open.",
        "sdk": {
          "id": 681,
          "symbol_index": 681,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderFrame_LastFrameTick",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_FRAME_LAST_FRAME_TICK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_FRAME_LAST_FRAME_TICK"
        }
      }
    },
    "Graphics_RenderFrame_StartTimeSec": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835920,
            "rva": 641616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844816,
            "rva": 650512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844800,
            "rva": 650496,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderFrame"
            },
            "instr_offset": 14,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "float",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_RenderFrame",
          "instr_offset": 14,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Timer_GetGameTime value captured at the start of Graphics_RenderFrame.",
        "sdk": {
          "id": 683,
          "symbol_index": 683,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderFrame_StartTimeSec",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_FRAME_START_TIME_SEC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_FRAME_START_TIME_SEC"
        }
      }
    },
    "Graphics_RenderMeshNode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4307600,
            "rva": 113296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderMeshNode_CapabilityFlags"
                },
                "instr_offset": 3958,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderMeshNode_ColorAdjustmentFlag"
                },
                "instr_offset": 1752,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderMeshNode_WorldTransformPtr"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 3585,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderBillboard"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4308080,
            "rva": 113776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderMeshNode_CapabilityFlags"
                },
                "instr_offset": 3958,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderMeshNode_ColorAdjustmentFlag"
                },
                "instr_offset": 1752,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderMeshNode_WorldTransformPtr"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 3585,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderBillboard"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4308080,
            "rva": 113776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderMeshNode_CapabilityFlags"
                },
                "instr_offset": 3958,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderMeshNode_ColorAdjustmentFlag"
                },
                "instr_offset": 1752,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderMeshNode_WorldTransformPtr"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 3585,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderBillboard"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            },
            {
              "name": "sprite_ctx",
              "type": "Graphics_SpriteNodeData*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderMeshNode_CapabilityFlags"
            },
            "instr_offset": 3958,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderMeshNode_ColorAdjustmentFlag"
            },
            "instr_offset": 1752,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderMeshNode_WorldTransformPtr"
            },
            "instr_offset": 11,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 64 A1 ??",
          "match_offset": 0
        },
        "docs": "Renders a scene node sprite/mesh quad from node transform/extents and Graphics_SpriteNodeData material data, emits polygon batch records, and links them into render buckets.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 272,
          "symbol_index": 272,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderMeshNode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_MESH_NODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_MESH_NODE"
        }
      }
    },
    "Graphics_RenderMeshNode_CapabilityFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 4545828,
            "rva": 351524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 3958,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554164,
            "rva": 359860,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 3958,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554148,
            "rva": 359844,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 3958,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderMeshNode"
            },
            "instr_offset": 3958,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 324,
          "symbol_index": 324,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderMeshNode_CapabilityFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_MESH_NODE_CAPABILITY_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_MESH_NODE_CAPABILITY_FLAGS"
        }
      }
    },
    "Graphics_RenderMeshNode_ColorAdjustmentFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505596,
            "rva": 2311292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 1752,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515836,
            "rva": 2321532,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 1752,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515260,
            "rva": 2320956,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 1752,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderMeshNode"
            },
            "instr_offset": 1752,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 750,
          "symbol_index": 750,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderMeshNode_ColorAdjustmentFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_MESH_NODE_COLOR_ADJUSTMENT_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_MESH_NODE_COLOR_ADJUSTMENT_FLAG"
        }
      }
    },
    "Graphics_RenderMeshNode_WorldTransformPtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831752,
            "rva": 23637448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843016,
            "rva": 23648712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27842440,
            "rva": 23648136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderMeshNode"
            },
            "instr_offset": 11,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 964,
          "symbol_index": 964,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderMeshNode_WorldTransformPtr",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_MESH_NODE_WORLD_TRANSFORM_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_MESH_NODE_WORLD_TRANSFORM_PTR"
        }
      }
    },
    "Graphics_RenderPolygonBatch": {
      "function": {
        "analysis": {
          "en": {
            "address": 4316400,
            "rva": 122096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_BackfaceVertex1Ptr"
                },
                "instr_offset": 160,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_BackfaceVertex2Ptr"
                },
                "instr_offset": 178,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_Flags"
                },
                "instr_offset": 985,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_HighlightMode"
                },
                "instr_offset": 6830,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_MaxPrimitivesPerBatchD3D"
                },
                "instr_offset": 973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_MinFogDist"
                },
                "instr_offset": 6193,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchRenderFlags"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchTextureState"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchTriCount"
                },
                "instr_offset": 1112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchVertexCount"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ProjectionScratch1"
                },
                "instr_offset": 526,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ProjectionScratch2"
                },
                "instr_offset": 519,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ProjectionScratch3"
                },
                "instr_offset": 512,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex1ScreenXY"
                },
                "instr_offset": 1826,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex1ViewZ"
                },
                "instr_offset": 1726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex2ScreenXY"
                },
                "instr_offset": 2185,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex2ViewZ"
                },
                "instr_offset": 2085,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex3ScreenXY"
                },
                "instr_offset": 2544,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex3ViewZ"
                },
                "instr_offset": 2444,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex4ScreenX"
                },
                "instr_offset": 2596,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex4ScreenY"
                },
                "instr_offset": 4375,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex4ViewZ"
                },
                "instr_offset": 2828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_VertexBase"
                },
                "instr_offset": 1091,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ViewDirectionX"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ViewDirectionY"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ViewDirectionZ"
                },
                "instr_offset": 29,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_WindowWidthFloat"
                },
                "instr_offset": 6219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeVertexColors"
                },
                "instr_offset": 6558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 6878,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 6020,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 6375,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 7341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4316880,
            "rva": 122576,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_BackfaceVertex1Ptr"
                },
                "instr_offset": 160,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_BackfaceVertex2Ptr"
                },
                "instr_offset": 178,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_Flags"
                },
                "instr_offset": 985,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_HighlightMode"
                },
                "instr_offset": 6830,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_MaxPrimitivesPerBatchD3D"
                },
                "instr_offset": 973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_MinFogDist"
                },
                "instr_offset": 6193,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchRenderFlags"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchTextureState"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchTriCount"
                },
                "instr_offset": 1112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchVertexCount"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ProjectionScratch1"
                },
                "instr_offset": 526,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ProjectionScratch2"
                },
                "instr_offset": 519,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ProjectionScratch3"
                },
                "instr_offset": 512,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex1ScreenXY"
                },
                "instr_offset": 1826,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex1ViewZ"
                },
                "instr_offset": 1726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex2ScreenXY"
                },
                "instr_offset": 2185,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex2ViewZ"
                },
                "instr_offset": 2085,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex3ScreenXY"
                },
                "instr_offset": 2544,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex3ViewZ"
                },
                "instr_offset": 2444,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex4ScreenX"
                },
                "instr_offset": 2596,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex4ScreenY"
                },
                "instr_offset": 4375,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex4ViewZ"
                },
                "instr_offset": 2828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_VertexBase"
                },
                "instr_offset": 1091,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ViewDirectionX"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ViewDirectionY"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ViewDirectionZ"
                },
                "instr_offset": 29,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_WindowWidthFloat"
                },
                "instr_offset": 6219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeVertexColors"
                },
                "instr_offset": 6558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 6878,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 6020,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 6375,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 7341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4316880,
            "rva": 122576,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_BackfaceVertex1Ptr"
                },
                "instr_offset": 160,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_BackfaceVertex2Ptr"
                },
                "instr_offset": 178,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_Flags"
                },
                "instr_offset": 985,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_HighlightMode"
                },
                "instr_offset": 6830,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_MaxPrimitivesPerBatchD3D"
                },
                "instr_offset": 973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_MinFogDist"
                },
                "instr_offset": 6193,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchRenderFlags"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchTextureState"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchTriCount"
                },
                "instr_offset": 1112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_PolyBatchVertexCount"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ProjectionScratch1"
                },
                "instr_offset": 526,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ProjectionScratch2"
                },
                "instr_offset": 519,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ProjectionScratch3"
                },
                "instr_offset": 512,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex1ScreenXY"
                },
                "instr_offset": 1826,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex1ViewZ"
                },
                "instr_offset": 1726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex2ScreenXY"
                },
                "instr_offset": 2185,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex2ViewZ"
                },
                "instr_offset": 2085,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex3ScreenXY"
                },
                "instr_offset": 2544,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex3ViewZ"
                },
                "instr_offset": 2444,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex4ScreenX"
                },
                "instr_offset": 2596,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex4ScreenY"
                },
                "instr_offset": 4375,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_TransformedVertex4ViewZ"
                },
                "instr_offset": 2828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_VertexBase"
                },
                "instr_offset": 1091,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ViewDirectionX"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ViewDirectionY"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_ViewDirectionZ"
                },
                "instr_offset": 29,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonBatch_WindowWidthFloat"
                },
                "instr_offset": 6219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeVertexColors"
                },
                "instr_offset": 6558,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IsPolygonInDebugList"
                },
                "instr_offset": 6878,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 6020,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 6375,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 7341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            },
            {
              "name": "polygon_refs",
              "type": "Graphics_PolygonRenderRef*"
            },
            {
              "name": "count",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_WindowWidthFloat"
            },
            "instr_offset": 6219,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_MinFogDist"
            },
            "instr_offset": 6193,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_Flags"
            },
            "instr_offset": 985,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_MaxPrimitivesPerBatchD3D"
            },
            "instr_offset": 973,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_ProjectionScratch1"
            },
            "instr_offset": 526,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_ProjectionScratch2"
            },
            "instr_offset": 519,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_ProjectionScratch3"
            },
            "instr_offset": 512,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_VertexBase"
            },
            "instr_offset": 1091,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_PolyBatchVertexCount"
            },
            "instr_offset": 1099,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_PolyBatchTriCount"
            },
            "instr_offset": 1112,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_PolyBatchTextureState"
            },
            "instr_offset": 194,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_BackfaceVertex1Ptr"
            },
            "instr_offset": 160,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_BackfaceVertex2Ptr"
            },
            "instr_offset": 178,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_TransformedVertex1ScreenXY"
            },
            "instr_offset": 1826,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_TransformedVertex1ViewZ"
            },
            "instr_offset": 1726,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_TransformedVertex2ScreenXY"
            },
            "instr_offset": 2185,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_TransformedVertex2ViewZ"
            },
            "instr_offset": 2085,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_TransformedVertex3ScreenXY"
            },
            "instr_offset": 2544,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_TransformedVertex3ViewZ"
            },
            "instr_offset": 2444,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_TransformedVertex4ScreenX"
            },
            "instr_offset": 2596,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_TransformedVertex4ScreenY"
            },
            "instr_offset": 4375,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_TransformedVertex4ViewZ"
            },
            "instr_offset": 2828,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_PolyBatchRenderFlags"
            },
            "instr_offset": 199,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_HighlightMode"
            },
            "instr_offset": 6830,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_ViewDirectionX"
            },
            "instr_offset": 60,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_ViewDirectionY"
            },
            "instr_offset": 50,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonBatch_ViewDirectionZ"
            },
            "instr_offset": 29,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 56 57 8B 58 70 A1 ?? ?? ?? ?? 89 5D CC",
          "match_offset": -12
        },
        "docs": "Builds/enqueues Graphics_PolygonBatchRecord entries into the global polygon batch buffer from polygon render references; callers ignore the residual return register.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 275,
          "symbol_index": 275,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderPolygonBatch",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_POLYGON_BATCH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_POLYGON_BATCH"
        }
      }
    },
    "Graphics_RenderPolygonBatch_BackfaceVertex1Ptr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810636,
            "rva": 616332,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 160,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4818988,
            "rva": 624684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 160,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4818972,
            "rva": 624668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 160,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 160,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 494,
          "symbol_index": 494,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_BackfaceVertex1Ptr",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_BACKFACE_VERTEX1_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_BACKFACE_VERTEX1_PTR"
        }
      }
    },
    "Graphics_RenderPolygonBatch_BackfaceVertex2Ptr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810640,
            "rva": 616336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 178,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4818992,
            "rva": 624688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 178,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4818976,
            "rva": 624672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 178,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 178,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 495,
          "symbol_index": 495,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_BackfaceVertex2Ptr",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_BACKFACE_VERTEX2_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_BACKFACE_VERTEX2_PTR"
        }
      }
    },
    "Graphics_RenderPolygonBatch_Flags": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802600,
            "rva": 608296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 985,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810936,
            "rva": 616632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 985,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810920,
            "rva": 616616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 985,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 985,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 481,
          "symbol_index": 481,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_Flags",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_FLAGS"
        }
      }
    },
    "Graphics_RenderPolygonBatch_HighlightMode": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507924,
            "rva": 2313620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6830,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519188,
            "rva": 2324884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6830,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518612,
            "rva": 2324308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6830,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 6830,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 844,
          "symbol_index": 844,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_HighlightMode",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_HIGHLIGHT_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_HIGHLIGHT_MODE"
        }
      }
    },
    "Graphics_RenderPolygonBatch_MaxPrimitivesPerBatchD3D": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802604,
            "rva": 608300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810940,
            "rva": 616636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810924,
            "rva": 616620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 973,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 973,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 482,
          "symbol_index": 482,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_MaxPrimitivesPerBatchD3D",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_MAX_PRIMITIVES_PER_BATCH_D3D",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_MAX_PRIMITIVES_PER_BATCH_D3D"
        }
      }
    },
    "Graphics_RenderPolygonBatch_MinFogDist": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509792,
            "rva": 315488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6193,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517984,
            "rva": 323680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6193,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517984,
            "rva": 323680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6193,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 6193,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 89,
          "symbol_index": 89,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_MinFogDist",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_MIN_FOG_DIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_MIN_FOG_DIST"
        }
      }
    },
    "Graphics_RenderPolygonBatch_PolyBatchRenderFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810680,
            "rva": 616376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4819036,
            "rva": 624732,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4819020,
            "rva": 624716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 199,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 505,
          "symbol_index": 505,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_PolyBatchRenderFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_POLY_BATCH_RENDER_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_POLY_BATCH_RENDER_FLAGS"
        }
      }
    },
    "Graphics_RenderPolygonBatch_PolyBatchTextureState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810632,
            "rva": 616328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4818984,
            "rva": 624680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4818968,
            "rva": 624664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 194,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 194,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 493,
          "symbol_index": 493,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_PolyBatchTextureState",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_POLY_BATCH_TEXTURE_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_POLY_BATCH_TEXTURE_STATE"
        }
      }
    },
    "Graphics_RenderPolygonBatch_PolyBatchTriCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802624,
            "rva": 608320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810976,
            "rva": 616672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810960,
            "rva": 616656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 1112,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 488,
          "symbol_index": 488,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_PolyBatchTriCount",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_POLY_BATCH_TRI_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_POLY_BATCH_TRI_COUNT"
        }
      }
    },
    "Graphics_RenderPolygonBatch_PolyBatchVertexCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802620,
            "rva": 608316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810972,
            "rva": 616668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810956,
            "rva": 616652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 1099,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 487,
          "symbol_index": 487,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_PolyBatchVertexCount",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_POLY_BATCH_VERTEX_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_POLY_BATCH_VERTEX_COUNT"
        }
      }
    },
    "Graphics_RenderPolygonBatch_ProjectionScratch1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802608,
            "rva": 608304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 526,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810944,
            "rva": 616640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 526,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810928,
            "rva": 616624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 526,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 526,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Projection/render local value in the polygon batching path.",
        "sdk": {
          "id": 483,
          "symbol_index": 483,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_ProjectionScratch1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_PROJECTION_SCRATCH1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_PROJECTION_SCRATCH1"
        }
      }
    },
    "Graphics_RenderPolygonBatch_ProjectionScratch2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802610,
            "rva": 608306,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 519,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810946,
            "rva": 616642,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 519,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810930,
            "rva": 616626,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 519,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 519,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Projection/render local value in the polygon batching path.",
        "sdk": {
          "id": 484,
          "symbol_index": 484,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_ProjectionScratch2",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_PROJECTION_SCRATCH2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_PROJECTION_SCRATCH2"
        }
      }
    },
    "Graphics_RenderPolygonBatch_ProjectionScratch3": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802612,
            "rva": 608308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 512,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810948,
            "rva": 616644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 512,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810932,
            "rva": 616628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 512,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 512,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Projection/render local value in the polygon batching path.",
        "sdk": {
          "id": 485,
          "symbol_index": 485,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_ProjectionScratch3",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_PROJECTION_SCRATCH3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_PROJECTION_SCRATCH3"
        }
      }
    },
    "Graphics_RenderPolygonBatch_TransformedVertex1ScreenXY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810648,
            "rva": 616344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1826,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4819000,
            "rva": 624696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1826,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4818984,
            "rva": 624680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1826,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 1826,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 496,
          "symbol_index": 496,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_TransformedVertex1ScreenXY",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX1_SCREEN_XY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX1_SCREEN_XY"
        }
      }
    },
    "Graphics_RenderPolygonBatch_TransformedVertex1ViewZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810652,
            "rva": 616348,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4819004,
            "rva": 624700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4818988,
            "rva": 624684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1726,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 1726,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 497,
          "symbol_index": 497,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_TransformedVertex1ViewZ",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX1_VIEW_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX1_VIEW_Z"
        }
      }
    },
    "Graphics_RenderPolygonBatch_TransformedVertex2ScreenXY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810656,
            "rva": 616352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2185,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4819008,
            "rva": 624704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2185,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4818992,
            "rva": 624688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2185,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 2185,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 498,
          "symbol_index": 498,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_TransformedVertex2ScreenXY",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX2_SCREEN_XY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX2_SCREEN_XY"
        }
      }
    },
    "Graphics_RenderPolygonBatch_TransformedVertex2ViewZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810660,
            "rva": 616356,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2085,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4819012,
            "rva": 624708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2085,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4818996,
            "rva": 624692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2085,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 2085,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 499,
          "symbol_index": 499,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_TransformedVertex2ViewZ",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX2_VIEW_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX2_VIEW_Z"
        }
      }
    },
    "Graphics_RenderPolygonBatch_TransformedVertex3ScreenXY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810664,
            "rva": 616360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2544,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4819016,
            "rva": 624712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2544,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4819000,
            "rva": 624696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2544,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 2544,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 500,
          "symbol_index": 500,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_TransformedVertex3ScreenXY",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX3_SCREEN_XY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX3_SCREEN_XY"
        }
      }
    },
    "Graphics_RenderPolygonBatch_TransformedVertex3ViewZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810668,
            "rva": 616364,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2444,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4819020,
            "rva": 624716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2444,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4819004,
            "rva": 624700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2444,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 2444,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 501,
          "symbol_index": 501,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_TransformedVertex3ViewZ",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX3_VIEW_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX3_VIEW_Z"
        }
      }
    },
    "Graphics_RenderPolygonBatch_TransformedVertex4ScreenX": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810672,
            "rva": 616368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2596,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4819024,
            "rva": 624720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2596,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4819008,
            "rva": 624704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2596,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 2596,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 502,
          "symbol_index": 502,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_TransformedVertex4ScreenX",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX4_SCREEN_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX4_SCREEN_X"
        }
      }
    },
    "Graphics_RenderPolygonBatch_TransformedVertex4ScreenY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810674,
            "rva": 616370,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 4375,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4819026,
            "rva": 624722,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 4375,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4819010,
            "rva": 624706,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 4375,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 4375,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 503,
          "symbol_index": 503,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_TransformedVertex4ScreenY",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX4_SCREEN_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX4_SCREEN_Y"
        }
      }
    },
    "Graphics_RenderPolygonBatch_TransformedVertex4ViewZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 4810676,
            "rva": 616372,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4819028,
            "rva": 624724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4819012,
            "rva": 624708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 2828,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 2828,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 504,
          "symbol_index": 504,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_TransformedVertex4ViewZ",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX4_VIEW_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_TRANSFORMED_VERTEX4_VIEW_Z"
        }
      }
    },
    "Graphics_RenderPolygonBatch_VertexBase": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802616,
            "rva": 608312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1091,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810968,
            "rva": 616664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1091,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810952,
            "rva": 616648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 1091,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 1091,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 486,
          "symbol_index": 486,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_VertexBase",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_VERTEX_BASE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_VERTEX_BASE"
        }
      }
    },
    "Graphics_RenderPolygonBatch_ViewDirectionX": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507928,
            "rva": 2313624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519192,
            "rva": 2324888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518616,
            "rva": 2324312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 60,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 845,
          "symbol_index": 845,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_ViewDirectionX",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_VIEW_DIRECTION_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_VIEW_DIRECTION_X"
        }
      }
    },
    "Graphics_RenderPolygonBatch_ViewDirectionY": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507930,
            "rva": 2313626,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519194,
            "rva": 2324890,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518618,
            "rva": 2324314,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 50,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 846,
          "symbol_index": 846,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_ViewDirectionY",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_VIEW_DIRECTION_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_VIEW_DIRECTION_Y"
        }
      }
    },
    "Graphics_RenderPolygonBatch_ViewDirectionZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507932,
            "rva": 2313628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 29,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519196,
            "rva": 2324892,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 29,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518620,
            "rva": 2324316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 29,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 29,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 847,
          "symbol_index": 847,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_ViewDirectionZ",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_VIEW_DIRECTION_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_VIEW_DIRECTION_Z"
        }
      }
    },
    "Graphics_RenderPolygonBatch_WindowWidthFloat": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509788,
            "rva": 315484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517980,
            "rva": 323676,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517980,
            "rva": 323676,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonBatch"
            },
            "instr_offset": 6219,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "float",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_RenderPolygonBatch",
          "instr_offset": 6219,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Float constant 640.0 used by polygon-batch projection checks.",
        "sdk": {
          "id": 87,
          "symbol_index": 87,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonBatch_WindowWidthFloat",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_BATCH_WINDOW_WIDTH_FLOAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_BATCH_WINDOW_WIDTH_FLOAT"
        }
      }
    },
    "Graphics_RenderPolygonCallback": {
      "data": {
        "analysis": {
          "en": {
            "address": 4545824,
            "rva": 351520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1025,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4554160,
            "rva": 359856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1025,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4554144,
            "rva": 359840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1025,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Scene_TraverseNodeTree"
            },
            "instr_offset": 1025,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Scene_TraverseNodeTree",
          "instr_offset": 1025,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Render callback pointer invoked for scene-tree polygon/mesh nodes; the SDK models the storage as void*.",
        "sdk": {
          "id": 323,
          "symbol_index": 323,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonCallback",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_CALLBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_CALLBACK"
        }
      }
    },
    "Graphics_RenderPolygonMesh": {
      "function": {
        "analysis": {
          "en": {
            "address": 4305376,
            "rva": 111072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_BatchRecords"
                },
                "instr_offset": 1522,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_CurrentPolygonBatchIndex"
                },
                "instr_offset": 1503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_NodeViewTranslationX"
                },
                "instr_offset": 98,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_NodeViewTranslationY"
                },
                "instr_offset": 174,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_NodeViewTranslationZ"
                },
                "instr_offset": 260,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 1622,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 829,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4305856,
            "rva": 111552,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_BatchRecords"
                },
                "instr_offset": 1522,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_CurrentPolygonBatchIndex"
                },
                "instr_offset": 1503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_NodeViewTranslationX"
                },
                "instr_offset": 98,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_NodeViewTranslationY"
                },
                "instr_offset": 174,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_NodeViewTranslationZ"
                },
                "instr_offset": 260,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 1622,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 866,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4305856,
            "rva": 111552,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_BatchRecords"
                },
                "instr_offset": 1522,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_CurrentPolygonBatchIndex"
                },
                "instr_offset": 1503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_NodeViewTranslationX"
                },
                "instr_offset": 98,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_NodeViewTranslationY"
                },
                "instr_offset": 174,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonMesh_NodeViewTranslationZ"
                },
                "instr_offset": 260,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 1622,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 866,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonMesh_CurrentPolygonBatchIndex"
            },
            "instr_offset": 1503,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonMesh_NodeViewTranslationX"
            },
            "instr_offset": 98,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonMesh_NodeViewTranslationY"
            },
            "instr_offset": 174,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonMesh_NodeViewTranslationZ"
            },
            "instr_offset": 260,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonMesh_BatchRecords"
            },
            "instr_offset": 1522,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 70 A1 ??",
          "match_offset": 0
        },
        "docs": "Transforms an actor/render-state quad into view/screen space, fills a polygon batch record, assigns UVs, and links it into render-list buckets. Callers ignore the residual return register.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 271,
          "symbol_index": 271,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderPolygonMesh",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_POLYGON_MESH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_POLYGON_MESH"
        }
      }
    },
    "Graphics_RenderPolygonMesh_BatchRecords": {
      "data": {
        "analysis": {
          "en": {
            "address": 6508000,
            "rva": 2313696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 1522,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519264,
            "rva": 2324960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 1522,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518688,
            "rva": 2324384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 1522,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonMesh"
            },
            "instr_offset": 1522,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 861,
          "symbol_index": 861,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonMesh_BatchRecords",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_MESH_BATCH_RECORDS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_MESH_BATCH_RECORDS"
        }
      }
    },
    "Graphics_RenderPolygonMesh_CurrentPolygonBatchIndex": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507936,
            "rva": 2313632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 1503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519200,
            "rva": 2324896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 1503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518624,
            "rva": 2324320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 1503,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonMesh"
            },
            "instr_offset": 1503,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 848,
          "symbol_index": 848,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonMesh_CurrentPolygonBatchIndex",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_MESH_CURRENT_POLYGON_BATCH_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_MESH_CURRENT_POLYGON_BATCH_INDEX"
        }
      }
    },
    "Graphics_RenderPolygonMesh_NodeViewTranslationX": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507988,
            "rva": 2313684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 98,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519252,
            "rva": 2324948,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 98,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518676,
            "rva": 2324372,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 98,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonMesh"
            },
            "instr_offset": 98,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 858,
          "symbol_index": 858,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonMesh_NodeViewTranslationX",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_MESH_NODE_VIEW_TRANSLATION_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_MESH_NODE_VIEW_TRANSLATION_X"
        }
      }
    },
    "Graphics_RenderPolygonMesh_NodeViewTranslationY": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507992,
            "rva": 2313688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 174,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519256,
            "rva": 2324952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 174,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518680,
            "rva": 2324376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 174,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonMesh"
            },
            "instr_offset": 174,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 859,
          "symbol_index": 859,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonMesh_NodeViewTranslationY",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_MESH_NODE_VIEW_TRANSLATION_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_MESH_NODE_VIEW_TRANSLATION_Y"
        }
      }
    },
    "Graphics_RenderPolygonMesh_NodeViewTranslationZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507996,
            "rva": 2313692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 260,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519260,
            "rva": 2324956,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 260,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518684,
            "rva": 2324380,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 260,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderPolygonMesh"
            },
            "instr_offset": 260,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 860,
          "symbol_index": 860,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderPolygonMesh_NodeViewTranslationZ",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_POLYGON_MESH_NODE_VIEW_TRANSLATION_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_POLYGON_MESH_NODE_VIEW_TRANSLATION_Z"
        }
      }
    },
    "Graphics_RenderSceneGeometry": {
      "function": {
        "analysis": {
          "en": {
            "address": 4323920,
            "rva": 129616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeVertexColors"
                },
                "instr_offset": 5435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryAlt"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 4735,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 4946,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 5925,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 2074,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3271,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            },
            {
              "name": "polygon_refs",
              "type": "Graphics_PolygonRenderRef*"
            },
            {
              "name": "count",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 81 EC 88 00 00 00 F7 05 ??",
          "match_offset": 0
        },
        "docs": "Converts/culls scene polygon render references into global Graphics_PolygonBatchRecord entries and returns the residual/updated batch count.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 277,
          "symbol_index": 277,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderSceneGeometry",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_SCENE_GEOMETRY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_SCENE_GEOMETRY"
        }
      }
    },
    "Graphics_RenderSceneGeometryAlt": {
      "function": {
        "analysis": {
          "en": {
            "address": 4329888,
            "rva": 135584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 4679,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometry"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4331824,
            "rva": 137520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 4679,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4331824,
            "rva": 137520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 4679,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            },
            {
              "name": "polygon_refs",
              "type": "Graphics_PolygonRenderRef*"
            },
            {
              "name": "count",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 F6 C2 04 0F 84 ??",
          "match_offset": -127
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 278,
          "symbol_index": 278,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderSceneGeometryAlt",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_SCENE_GEOMETRY_ALT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_SCENE_GEOMETRY_ALT"
        }
      }
    },
    "Graphics_RenderSceneGeometryWrapper": {
      "function": {
        "analysis": {
          "en": {
            "address": 4323888,
            "rva": 129584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 972,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4324368,
            "rva": 130064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeVertexColors"
                },
                "instr_offset": 6830,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryAlt"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 6104,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 6341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 7397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 942,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 972,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4324368,
            "rva": 130064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeVertexColors"
                },
                "instr_offset": 6830,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryAlt"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 6104,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 6341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 7397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 942,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 972,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            },
            {
              "name": "polygon_refs",
              "type": "Graphics_PolygonRenderRef*"
            },
            {
              "name": "count",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "54 24 04 50 51 52 E8 ??",
          "match_offset": -9
        },
        "docs": "Thin wrapper that forwards scene polygon render references to Graphics_RenderPolygonBatch.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 276,
          "symbol_index": 276,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderSceneGeometryWrapper",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_SCENE_GEOMETRY_WRAPPER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_SCENE_GEOMETRY_WRAPPER"
        }
      }
    },
    "Graphics_RenderSpriteObjectNode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4204448,
            "rva": 10144,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4204848,
            "rva": 10544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4204848,
            "rva": 10544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "50 8D 46 40 51 50 E8 ??",
          "match_offset": -24
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 41,
          "symbol_index": 41,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderSpriteObjectNode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_SPRITE_OBJECT_NODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_SPRITE_OBJECT_NODE"
        }
      }
    },
    "Graphics_RenderSpritePolygons": {
      "function": {
        "analysis": {
          "en": {
            "address": 4341648,
            "rva": 147344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeVertexColors"
                },
                "instr_offset": 1767,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 750,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4343584,
            "rva": 149280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeVertexColors"
                },
                "instr_offset": 1767,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 750,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4343584,
            "rva": 149280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeVertexColors"
                },
                "instr_offset": 1767,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 750,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            },
            {
              "name": "graphics_transformed_vertices",
              "type": "Graphics_SpriteVertexData*"
            },
            {
              "name": "projected_vertices",
              "type": "Graphics_ProjectedVertex*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8D 04 90 84 C9 0F 84 ??",
          "match_offset": -71
        },
        "docs": "Projects and enqueues sprite polygon references from a scene node using transformed-vertex and projected-vertex local buffers. Callers ignore the residual return register.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 282,
          "symbol_index": 282,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderSpritePolygons",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_SPRITE_POLYGONS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_SPRITE_POLYGONS"
        }
      }
    },
    "Graphics_RenderTexturedQuad": {
      "function": {
        "analysis": {
          "en": {
            "address": 4280160,
            "rva": 85856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_One"
                },
                "instr_offset": 194,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4280648,
            "rva": 86344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_One"
                },
                "instr_offset": 194,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4280648,
            "rva": 86344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_One"
                },
                "instr_offset": 194,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "packed_xy",
              "type": "uint32_t",
              "docs": "Packed signed 16-bit screen-space x/y origin."
            },
            {
              "name": "material",
              "type": "Material_TableEntry*",
              "docs": "Runtime material record; position 0 supplies flags and position 4 supplies the texture descriptor/handle record."
            },
            {
              "name": "render_flags",
              "type": "uint32_t",
              "docs": "Render flags; bits 24-26 request blend mode, falling back to material flags bit 0x80 when absent."
            },
            {
              "name": "top_color",
              "type": "uint32_t",
              "docs": "Packed color used for the top two quad vertices; alpha is supplied by D3D_SetBlendMode."
            },
            {
              "name": "bottom_color",
              "type": "uint32_t",
              "docs": "Packed color used for the bottom two quad vertices; alpha is supplied by D3D_SetBlendMode."
            },
            {
              "name": "quad_size",
              "type": "int32_t",
              "docs": "Width/height in pixels added to packedXY to form the bottom-right corner."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Math_One"
            },
            "instr_offset": 194,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? C0 88 44 24 10",
          "match_offset": -78
        },
        "docs": "Draws a screen-space textured quad as a Direct3D triangle strip using FVF 0x144 and four transformed/lit textured vertices.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 196,
          "symbol_index": 196,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderTexturedQuad",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_TEXTURED_QUAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_TEXTURED_QUAD"
        }
      }
    },
    "Graphics_RenderTexturedQuadMaterialSize": {
      "function": {
        "analysis": {
          "en": {
            "address": 4280832,
            "rva": 86528,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 425,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4281328,
            "rva": 87024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 604,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4281328,
            "rva": 87024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 604,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "packed_xy",
              "type": "uint32_t",
              "docs": "Packed signed 16-bit screen-space x/y origin."
            },
            {
              "name": "material",
              "type": "Material_TableEntry*",
              "docs": "Material/render entry; texture/frame data at +4 supplies width/height bytes."
            },
            {
              "name": "render_flags",
              "type": "uint32_t",
              "docs": "Render flags; high blend bits can override material blend mode."
            },
            {
              "name": "top_color",
              "type": "uint32_t",
              "docs": "Packed color used for the top two quad vertices after blend-byte insertion."
            },
            {
              "name": "bottom_color",
              "type": "uint32_t",
              "docs": "Packed color used for the bottom two quad vertices after blend-byte insertion."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "33 C9 8A 48 02 8B E9 ??",
          "match_offset": -51
        },
        "docs": "Draws a textured screen-space quad using the material's texture/frame dimensions as width and height. Font rendering callers use this shared quad path.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 197,
          "symbol_index": 197,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderTexturedQuadMaterialSize",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_TEXTURED_QUAD_MATERIAL_SIZE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_TEXTURED_QUAD_MATERIAL_SIZE"
        }
      }
    },
    "Graphics_RenderTexturedSprite": {
      "function": {
        "analysis": {
          "en": {
            "address": 4281552,
            "rva": 87248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderTexturedSprite_FontGlyphRenderState"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 235,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 990,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 907,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 938,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 964,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 900,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 1040,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 1159,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 1319,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 292,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 2639,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 2862,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 3242,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateBoneCounter"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 630,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 1559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdatePuppyCounter"
                },
                "instr_offset": 373,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4282048,
            "rva": 87744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderTexturedSprite_FontGlyphRenderState"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 235,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 990,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 4070,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 4561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 4951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 907,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 938,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 964,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1015,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 388,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 1220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateBoneCounter"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 632,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 1561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdatePuppyCounter"
                },
                "instr_offset": 375,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4282048,
            "rva": 87744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderTexturedSprite_FontGlyphRenderState"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 235,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetTextureColorOperation"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 990,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 4019,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 4489,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 4879,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 907,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 938,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 964,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1015,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 388,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 1220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateBoneCounter"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 632,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 1561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdatePuppyCounter"
                },
                "instr_offset": 375,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "packed_xy",
              "type": "uint32_t",
              "docs": "Packed signed 16-bit screen-space x/y origin."
            },
            {
              "name": "packed_wh",
              "type": "uint32_t",
              "docs": "Packed signed 16-bit width/height; non-positive components fall back to texture dimensions or 1."
            },
            {
              "name": "sprite",
              "type": "Graphics_SpriteContext*",
              "docs": "Sprite/font render context; null uses the default font_glyph_render_state."
            },
            {
              "name": "render_flags",
              "type": "uint32_t",
              "docs": "Blend/color/UV-orientation flags; bits 24-26 select blend, 0x18000000 permutes UVs, 0x40000000 requests gradient colors, 0x80000000 supplies packed RGB."
            },
            {
              "name": "rotation_angle",
              "type": "uint32_t",
              "docs": "Low 12 bits are fixed-angle units; zero disables rotation."
            },
            {
              "name": "rotation_pivot_xy",
              "type": "uint32_t",
              "docs": "Packed signed 16-bit x/y pivot used when rotationAngle is nonzero."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderTexturedSprite_FontGlyphRenderState"
            },
            "instr_offset": 23,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "F6 57 3B DE 75 ?? BB ??",
          "match_offset": -17
        },
        "docs": "Draws a screen-space sprite/font glyph as a Direct3D triangle strip. Builds four transformed/lit vertices, derives missing dimensions from the texture descriptor, sets texture/color state, optionally permutes UVs, applies gradient color mode, and rotates around rotationPivotXY when rotationAngle is nonzero.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 198,
          "symbol_index": 198,
          "accessor": "DTTR_PCDOGS_F_Graphics_RenderTexturedSprite",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_RENDER_TEXTURED_SPRITE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_RENDER_TEXTURED_SPRITE"
        }
      }
    },
    "Graphics_RenderTexturedSprite_FontGlyphRenderState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515064,
            "rva": 320760,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523256,
            "rva": 328952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523256,
            "rva": 328952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderTexturedSprite"
            },
            "instr_offset": 23,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 122,
          "symbol_index": 122,
          "accessor": "DTTR_PCDOGS_D_Graphics_RenderTexturedSprite_FontGlyphRenderState",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_RENDER_TEXTURED_SPRITE_FONT_GLYPH_RENDER_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_RENDER_TEXTURED_SPRITE_FONT_GLYPH_RENDER_STATE"
        }
      }
    },
    "Graphics_Render_ScreenVertexI16Z": {
      "type": {
        "members": [
          {
            "type": "Math_ScreenPointI16",
            "name": "screen",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "z",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_Render_ScreenVertexI16Z"
        }
      }
    },
    "Graphics_RenderingEnabledAnchor": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4450282,
            "rva": 255978,
            "image_base": 4194304
          },
          "eu": {
            "address": 4455555,
            "rva": 261251,
            "image_base": 4194304
          },
          "sc": {
            "address": 4455523,
            "rva": 261219,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "39 35 ?? ?? ?? ?? 74 ?? E8"
      }
    },
    "Graphics_SelectTextureLOD": {
      "function": {
        "analysis": {
          "en": {
            "address": 4289984,
            "rva": 95680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4290448,
            "rva": 96144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4290448,
            "rva": 96144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_DrawQuad"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "batch",
              "type": "Graphics_PolygonBatchRecord*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 8B 54 24 04 8B",
          "match_offset": 0
        },
        "docs": "Selects a texture LOD/render bucket from graphics capability flags and the polygon batch screen-depth fields; returns -1 when no LOD bucket applies.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 207,
          "symbol_index": 207,
          "accessor": "DTTR_PCDOGS_F_Graphics_SelectTextureLOD",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_SELECT_TEXTURE_LOD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_SELECT_TEXTURE_LOD"
        }
      }
    },
    "Graphics_SetFadeLevel": {
      "function": {
        "analysis": {
          "en": {
            "address": 4293728,
            "rva": 99424,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 500,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 918,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 979,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2512,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3929,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 346,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 595,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 610,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 1345,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4294192,
            "rva": 99888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 510,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 918,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 979,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2512,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3929,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 636,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1570,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4294192,
            "rva": 99888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 510,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateFadeCounters"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 918,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 979,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2512,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3929,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 636,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1570,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "fade_level",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 8B 15 ?? ?? ?? ?? 8B 44 24 04",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 214,
          "symbol_index": 214,
          "accessor": "DTTR_PCDOGS_F_Graphics_SetFadeLevel",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_SET_FADE_LEVEL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_SET_FADE_LEVEL"
        }
      }
    },
    "Graphics_SetPolygonUVs": {
      "function": {
        "analysis": {
          "en": {
            "address": 4303872,
            "rva": 109568,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM02"
                },
                "instr_offset": 359,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM10"
                },
                "instr_offset": 304,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM11"
                },
                "instr_offset": 371,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM12"
                },
                "instr_offset": 383,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM20"
                },
                "instr_offset": 395,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM21"
                },
                "instr_offset": 405,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM22"
                },
                "instr_offset": 415,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraTransformMatrix"
                },
                "instr_offset": 347,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_TransformMatrixElement1"
                },
                "instr_offset": 318,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 3543,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 3585,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6020,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6375,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 7341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 1622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometry"
                },
                "instr_offset": 4735,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometry"
                },
                "instr_offset": 4946,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometry"
                },
                "instr_offset": 5925,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryAlt"
                },
                "instr_offset": 4679,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpritePolygons"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 2834,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4304352,
            "rva": 110048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM02"
                },
                "instr_offset": 359,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM10"
                },
                "instr_offset": 304,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM11"
                },
                "instr_offset": 371,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM12"
                },
                "instr_offset": 383,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM20"
                },
                "instr_offset": 395,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM21"
                },
                "instr_offset": 405,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM22"
                },
                "instr_offset": 415,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraTransformMatrix"
                },
                "instr_offset": 347,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_TransformMatrixElement1"
                },
                "instr_offset": 318,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 3543,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 3585,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6020,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6375,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 7341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 1622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryAlt"
                },
                "instr_offset": 4679,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 6104,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 6341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 7397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpritePolygons"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 2834,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4304352,
            "rva": 110048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM02"
                },
                "instr_offset": 359,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM10"
                },
                "instr_offset": 304,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM11"
                },
                "instr_offset": 371,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM12"
                },
                "instr_offset": 383,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM20"
                },
                "instr_offset": 395,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM21"
                },
                "instr_offset": 405,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraMatrixM22"
                },
                "instr_offset": 415,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_CameraTransformMatrix"
                },
                "instr_offset": 347,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_SetPolygonUVs_TransformMatrixElement1"
                },
                "instr_offset": 318,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 3543,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 3585,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6020,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 6375,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 7341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonMesh"
                },
                "instr_offset": 1622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryAlt"
                },
                "instr_offset": 4679,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 6104,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 6341,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 7397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSpritePolygons"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 2834,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            },
            {
              "name": "out_batch",
              "type": "Graphics_PolygonBatchRecord*"
            },
            {
              "name": "material_entry",
              "type": "Material_TableEntry*"
            },
            {
              "name": "uv_index_or_mode",
              "type": "int16_t"
            },
            {
              "name": "polygon_vertices",
              "type": "Mesh_RuntimeVertex**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_SetPolygonUVs_CameraTransformMatrix"
            },
            "instr_offset": 347,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_SetPolygonUVs_TransformMatrixElement1"
            },
            "instr_offset": 318,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_SetPolygonUVs_CameraMatrixM02"
            },
            "instr_offset": 359,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_SetPolygonUVs_CameraMatrixM10"
            },
            "instr_offset": 304,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_SetPolygonUVs_CameraMatrixM11"
            },
            "instr_offset": 371,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_SetPolygonUVs_CameraMatrixM12"
            },
            "instr_offset": 383,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_SetPolygonUVs_CameraMatrixM20"
            },
            "instr_offset": 395,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_SetPolygonUVs_CameraMatrixM21"
            },
            "instr_offset": 405,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_SetPolygonUVs_CameraMatrixM22"
            },
            "instr_offset": 415,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4D 04 3B CA 0F 84 ??",
          "match_offset": -66
        },
        "docs": "Copies material-table entry material/render fields into outBatch and writes the four packed texture UV pairs. Supports explicit, indexed, tiled, rotated/flipped, and environment/camera-based UV modes.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 270,
          "symbol_index": 270,
          "accessor": "DTTR_PCDOGS_F_Graphics_SetPolygonUVs",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_SET_POLYGON_U_VS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_SET_POLYGON_U_VS"
        }
      }
    },
    "Graphics_SetPolygonUVs_CameraMatrixM02": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507972,
            "rva": 2313668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 359,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519236,
            "rva": 2324932,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 359,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518660,
            "rva": 2324356,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 359,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_SetPolygonUVs"
            },
            "instr_offset": 359,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 851,
          "symbol_index": 851,
          "accessor": "DTTR_PCDOGS_D_Graphics_SetPolygonUVs_CameraMatrixM02",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M02",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M02"
        }
      }
    },
    "Graphics_SetPolygonUVs_CameraMatrixM10": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507974,
            "rva": 2313670,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 304,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519238,
            "rva": 2324934,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 304,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518662,
            "rva": 2324358,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 304,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_SetPolygonUVs"
            },
            "instr_offset": 304,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 852,
          "symbol_index": 852,
          "accessor": "DTTR_PCDOGS_D_Graphics_SetPolygonUVs_CameraMatrixM10",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M10",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M10"
        }
      }
    },
    "Graphics_SetPolygonUVs_CameraMatrixM11": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507976,
            "rva": 2313672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 371,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519240,
            "rva": 2324936,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 371,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518664,
            "rva": 2324360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 371,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_SetPolygonUVs"
            },
            "instr_offset": 371,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 853,
          "symbol_index": 853,
          "accessor": "DTTR_PCDOGS_D_Graphics_SetPolygonUVs_CameraMatrixM11",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M11",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M11"
        }
      }
    },
    "Graphics_SetPolygonUVs_CameraMatrixM12": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507978,
            "rva": 2313674,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 383,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519242,
            "rva": 2324938,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 383,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518666,
            "rva": 2324362,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 383,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_SetPolygonUVs"
            },
            "instr_offset": 383,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 854,
          "symbol_index": 854,
          "accessor": "DTTR_PCDOGS_D_Graphics_SetPolygonUVs_CameraMatrixM12",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M12",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M12"
        }
      }
    },
    "Graphics_SetPolygonUVs_CameraMatrixM20": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507980,
            "rva": 2313676,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 395,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519244,
            "rva": 2324940,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 395,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518668,
            "rva": 2324364,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 395,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_SetPolygonUVs"
            },
            "instr_offset": 395,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 855,
          "symbol_index": 855,
          "accessor": "DTTR_PCDOGS_D_Graphics_SetPolygonUVs_CameraMatrixM20",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M20",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M20"
        }
      }
    },
    "Graphics_SetPolygonUVs_CameraMatrixM21": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507982,
            "rva": 2313678,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 405,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519246,
            "rva": 2324942,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 405,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518670,
            "rva": 2324366,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 405,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_SetPolygonUVs"
            },
            "instr_offset": 405,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 856,
          "symbol_index": 856,
          "accessor": "DTTR_PCDOGS_D_Graphics_SetPolygonUVs_CameraMatrixM21",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M21",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M21"
        }
      }
    },
    "Graphics_SetPolygonUVs_CameraMatrixM22": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507984,
            "rva": 2313680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 415,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519248,
            "rva": 2324944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 415,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518672,
            "rva": 2324368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 415,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_SetPolygonUVs"
            },
            "instr_offset": 415,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 857,
          "symbol_index": 857,
          "accessor": "DTTR_PCDOGS_D_Graphics_SetPolygonUVs_CameraMatrixM22",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M22",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_SET_POLYGON_U_VS_CAMERA_MATRIX_M22"
        }
      }
    },
    "Graphics_SetPolygonUVs_CameraTransformMatrix": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507968,
            "rva": 2313664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 347,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519232,
            "rva": 2324928,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 347,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518656,
            "rva": 2324352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 347,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_SetPolygonUVs"
            },
            "instr_offset": 347,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 849,
          "symbol_index": 849,
          "accessor": "DTTR_PCDOGS_D_Graphics_SetPolygonUVs_CameraTransformMatrix",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_SET_POLYGON_U_VS_CAMERA_TRANSFORM_MATRIX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_SET_POLYGON_U_VS_CAMERA_TRANSFORM_MATRIX"
        }
      }
    },
    "Graphics_SetPolygonUVs_TransformMatrixElement1": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507970,
            "rva": 2313666,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 318,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519234,
            "rva": 2324930,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 318,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518658,
            "rva": 2324354,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 318,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_SetPolygonUVs"
            },
            "instr_offset": 318,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 850,
          "symbol_index": 850,
          "accessor": "DTTR_PCDOGS_D_Graphics_SetPolygonUVs_TransformMatrixElement1",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_SET_POLYGON_U_VS_TRANSFORM_MATRIX_ELEMENT1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_SET_POLYGON_U_VS_TRANSFORM_MATRIX_ELEMENT1"
        }
      }
    },
    "Graphics_SpriteContext": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Material_RuntimeDescriptor*",
            "name": "texture_descriptor",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_08[6]",
            "offset": 8,
            "doc": "Reserved sprite context gap before the documented glyph advance adjustment."
          },
          {
            "type": "int16_t",
            "name": "glyph_advance_adjust",
            "offset": 14,
            "doc": "Signed text and glyph advance adjustment read by UI_UpdateAndRenderSprites as the fallback spacing word."
          },
          {
            "type": "uint8_t",
            "name": "subrect_u",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "subrect_v",
            "offset": 17,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_12[2]",
            "offset": 18,
            "doc": "Runtime tail padding reserved for internal use. Graphics_RenderTexturedSprite may read across these bytes with a masked load."
          },
          {
            "type": "uint8_t",
            "name": "color_mod_r",
            "offset": 20,
            "doc": "Per-sprite red color modulation byte."
          },
          {
            "type": "uint8_t",
            "name": "color_mod_g",
            "offset": 21,
            "doc": "Per-sprite green color modulation byte."
          },
          {
            "type": "uint8_t",
            "name": "color_mod_b",
            "offset": 22,
            "doc": "Per-sprite blue color modulation byte."
          },
          {
            "type": "uint8_t",
            "name": "pad_17",
            "offset": 23,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_SpriteContext"
        }
      }
    },
    "Graphics_SpriteData": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "y",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "texture_id",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_SpriteData"
        }
      }
    },
    "Graphics_SpriteLayer": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "texture_handle",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "sprite_count",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Graphics_SpriteData*",
            "name": "sprite_list_ptr",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Graphics_SpriteLayer*",
            "name": "next_layer_ptr",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_SpriteLayer"
        }
      }
    },
    "Graphics_SpriteNodeData": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "node_type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "sprite_flags",
            "offset": 1,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "frame_index",
            "offset": 2,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "material_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "offset",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "sort_key",
            "offset": 14,
            "doc": null
          },
          {
            "type": "Math_Vec2I16",
            "name": "bound_extent",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_SpriteNodeData"
        }
      }
    },
    "Graphics_SpriteVertexData": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "pos",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "color_r",
            "offset": 6,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "color_g",
            "offset": 7,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "color_b",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "normal_x",
            "offset": 9,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "normal_y",
            "offset": 10,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "vertex_state",
            "offset": 11,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_SpriteVertexData"
        }
      }
    },
    "Graphics_TakeScreenshot": {
      "function": {
        "analysis": {
          "en": {
            "address": 4295568,
            "rva": 101264,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_TakeScreenshot_FileModeReadBinary"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_TakeScreenshot_FormatString"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_SaveScreenshot"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4296048,
            "rva": 101744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_TakeScreenshot_FileModeReadBinary"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_TakeScreenshot_FormatString"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_SaveScreenshot"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4296048,
            "rva": 101744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_TakeScreenshot_FileModeReadBinary"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_TakeScreenshot_FormatString"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_SaveScreenshot"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_TakeScreenshot_FileModeReadBinary"
            },
            "instr_offset": 29,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_TakeScreenshot_FormatString"
            },
            "instr_offset": 14,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "81 EC 04 01 00 00 56 33 F6 56 8D 44 24 08 68 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 224,
          "symbol_index": 224,
          "accessor": "DTTR_PCDOGS_F_Graphics_TakeScreenshot",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_TAKE_SCREENSHOT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_TAKE_SCREENSHOT"
        }
      },
      "signature": {
        "analysis": {
          "en": {
            "address": 4295568,
            "rva": 101264,
            "image_base": 4194304
          },
          "eu": {
            "address": 4296048,
            "rva": 101744,
            "image_base": 4194304
          },
          "sc": {
            "address": 4296048,
            "rva": 101744,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "81 EC 04 01 00 00 56 ??"
      }
    },
    "Graphics_TakeScreenshot_FileModeReadBinary": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516304,
            "rva": 322000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524500,
            "rva": 330196,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524500,
            "rva": 330196,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_TakeScreenshot"
            },
            "instr_offset": 29,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 166,
          "symbol_index": 166,
          "accessor": "DTTR_PCDOGS_D_Graphics_TakeScreenshot_FileModeReadBinary",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_TAKE_SCREENSHOT_FILE_MODE_READ_BINARY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_TAKE_SCREENSHOT_FILE_MODE_READ_BINARY"
        }
      }
    },
    "Graphics_TakeScreenshot_FormatString": {
      "data": {
        "analysis": {
          "en": {
            "address": 4516308,
            "rva": 322004,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524504,
            "rva": 330200,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524504,
            "rva": 330200,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_TakeScreenshot"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_TakeScreenshot"
            },
            "instr_offset": 14,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "read_only",
        "docs": "Screenshot filename/format string used by Graphics_TakeScreenshot.",
        "sdk": {
          "id": 167,
          "symbol_index": 167,
          "accessor": "DTTR_PCDOGS_D_Graphics_TakeScreenshot_FormatString",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_TAKE_SCREENSHOT_FORMAT_STRING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_TAKE_SCREENSHOT_FORMAT_STRING"
        }
      }
    },
    "Graphics_TexCoord8": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "u",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "v",
            "offset": 1,
            "doc": null
          }
        ],
        "size": 2,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_TexCoord8"
        }
      }
    },
    "Graphics_TexWrapMode": {
      "type": {
        "members": [
          {
            "type": "PKG_UVCoord",
            "name": "mode",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved[2]",
            "offset": 2,
            "doc": "Upper bytes of the packed texture wrap/mode word. No named read path uses these bits."
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_TexWrapMode"
        }
      }
    },
    "Graphics_UpdateFadeCounters": {
      "function": {
        "analysis": {
          "en": {
            "address": 4457280,
            "rva": 262976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_RenderOverlays"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4462832,
            "rva": 268528,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_RenderOverlays"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4462848,
            "rva": 268544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_RenderOverlays"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? 83 C4 04 C3 A0",
          "match_offset": -49
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 574,
          "symbol_index": 574,
          "accessor": "DTTR_PCDOGS_F_Graphics_UpdateFadeCounters",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_UPDATE_FADE_COUNTERS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_UPDATE_FADE_COUNTERS"
        }
      }
    },
    "Graphics_UpdateMeshCommandFlags": {
      "function": {
        "analysis": {
          "en": {
            "address": 4274224,
            "rva": 79920,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_UpdateMeshCommandFlags_SignalDispatchTable"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 1057,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1396,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 1790,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4274704,
            "rva": 80400,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_UpdateMeshCommandFlags_SignalDispatchTable"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 2525,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 1057,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1396,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4274704,
            "rva": 80400,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_UpdateMeshCommandFlags_SignalDispatchTable"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 2511,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 1057,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1396,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "cmd_list",
              "type": "Mesh_CmdList*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Graphics_UpdateMeshCommandFlags_SignalDispatchTable"
            },
            "instr_offset": 119,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 83 EC 0C F6",
          "match_offset": 0
        },
        "docs": "Polls mesh command signal ids and updates command progress/flags; marks changed commands dirty.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 184,
          "symbol_index": 184,
          "accessor": "DTTR_PCDOGS_F_Graphics_UpdateMeshCommandFlags",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_UPDATE_MESH_COMMAND_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_UPDATE_MESH_COMMAND_FLAGS"
        }
      }
    },
    "Graphics_UpdateMeshCommandFlags_SignalDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4274696,
            "rva": 80392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4275176,
            "rva": 80872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4275176,
            "rva": 80872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_UpdateMeshCommandFlags"
            },
            "instr_offset": 119,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Graphics_UpdateMeshCommandFlags",
          "instr_offset": 119,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Eleven-entry uint32_t jump table used by Graphics_UpdateMeshCommandFlags for mesh command signal ids 0..10.",
        "sdk": {
          "id": 31,
          "symbol_index": 31,
          "accessor": "DTTR_PCDOGS_D_Graphics_UpdateMeshCommandFlags_SignalDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_UPDATE_MESH_COMMAND_FLAGS_SIGNAL_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_UPDATE_MESH_COMMAND_FLAGS_SIGNAL_DISPATCH_TABLE"
        }
      }
    },
    "Graphics_UpdateScreenFade": {
      "function": {
        "analysis": {
          "en": {
            "address": 4218752,
            "rva": 24448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PauseAllSounds"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 449,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 767,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 907,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 938,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 964,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 662,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_RenderOverlays"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2497,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4219200,
            "rva": 24896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PauseAllSounds"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 449,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 767,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 907,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 938,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 964,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 662,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_RenderOverlays"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2497,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4219200,
            "rva": 24896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PauseAllSounds"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 449,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 435,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawFadeOverlay"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 732,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 767,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawRectangle"
                },
                "instr_offset": 861,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 907,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 938,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 964,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 662,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_RenderOverlays"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2497,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 10 8B 0D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 72,
          "symbol_index": 72,
          "accessor": "DTTR_PCDOGS_F_Graphics_UpdateScreenFade",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_GRAPHICS_UPDATE_SCREEN_FADE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_GRAPHICS_UPDATE_SCREEN_FADE"
        }
      }
    },
    "Graphics_ViewVertex": {
      "type": {
        "members": [
          {
            "type": "float",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "float",
            "name": "y",
            "offset": 4,
            "doc": null
          },
          {
            "type": "float",
            "name": "z",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_ViewVertex"
        }
      }
    },
    "Graphics_WindowWidth": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528100,
            "rva": 333796,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536296,
            "rva": 341992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536296,
            "rva": 341992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 92,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_InitDirectDrawAndDirect3D",
          "instr_offset": 92,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Active render/window width in pixels; initialized during DirectDraw/Direct3D setup and read by render projection/batching paths.",
        "sdk": {
          "id": 88,
          "symbol_index": 88,
          "accessor": "DTTR_PCDOGS_D_Graphics_WindowWidth",
          "sdk_id": "DTTR_PCDOGS_DATA_GRAPHICS_WINDOW_WIDTH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_GRAPHICS_WINDOW_WIDTH"
        }
      }
    },
    "Graphics_WorkArea": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "transform_scratch[144]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "float",
            "name": "clip_double_buffer_0[160]",
            "offset": 144,
            "doc": null
          },
          {
            "type": "float",
            "name": "clip_double_buffer_1[160]",
            "offset": 784,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "vertex_scratch[104]",
            "offset": 1424,
            "doc": null
          },
          {
            "type": "float",
            "name": "color_data[20]",
            "offset": 1528,
            "doc": null
          },
          {
            "type": "Graphics_FloatColorRGB",
            "name": "color_channels[4]",
            "offset": 1608,
            "doc": null
          }
        ],
        "size": 1656,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Graphics_WorkArea"
        }
      }
    },
    "Input_AcquireDevice": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301120,
            "rva": 106816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 472,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4301600,
            "rva": 107296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 472,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4301600,
            "rva": 107296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 472,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 50 8B 08 FF 51 1C F7 D8 1B C0 40 C3 56 57 8B 7C 24 10 57 E8 ??",
          "match_offset": 0
        },
        "docs": "Calls IDirectInputDevice::Acquire and returns 1 on success, 0 on failure.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 242,
          "symbol_index": 242,
          "accessor": "DTTR_PCDOGS_F_Input_AcquireDevice",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_ACQUIRE_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_ACQUIRE_DEVICE"
        }
      }
    },
    "Input_ButtonNameStringIDs": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526876,
            "rva": 332572,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4535072,
            "rva": 340768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4535072,
            "rva": 340768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_FormatButtonName"
            },
            "instr_offset": 60,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t[0x113]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_FormatButtonName",
          "instr_offset": 60,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First entry/base of the input button-name string-id table consumed by Input_FormatButtonName and Input_GetButtonString.",
        "sdk": {
          "id": 273,
          "symbol_index": 273,
          "accessor": "DTTR_PCDOGS_D_Input_ButtonNameStringIDs",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_BUTTON_NAME_STRING_I_DS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_BUTTON_NAME_STRING_I_DS"
        }
      }
    },
    "Input_CalculateMovementVector": {
      "function": {
        "analysis": {
          "en": {
            "address": 4468288,
            "rva": 273984,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CalculateMovementVector_DirectionDispatchTable"
                },
                "instr_offset": 41,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CurrentX"
                },
                "instr_offset": 173,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4475504,
            "rva": 281200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CalculateMovementVector_DirectionDispatchTable"
                },
                "instr_offset": 41,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CurrentX"
                },
                "instr_offset": 173,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4475440,
            "rva": 281136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CalculateMovementVector_DirectionDispatchTable"
                },
                "instr_offset": 41,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CurrentX"
                },
                "instr_offset": 173,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "out_move_vec",
              "type": "int32_t*",
              "docs": "Output vector with at least three int32_t components written by this helper."
            },
            {
              "name": "player_index",
              "type": "int32_t"
            },
            {
              "name": "heading_angle",
              "type": "int32_t",
              "docs": "Camera-relative heading angle consumed by Math_SinCosFP12; known callers use the low 16 bits / 12-bit fixed-point angle domain, while the ABI remains int32_t."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_CalculateMovementVector_DirectionDispatchTable"
            },
            "instr_offset": 41,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_CurrentX"
            },
            "instr_offset": 173,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0F 49 83 F9 09 0F 87 ??",
          "match_offset": -30
        },
        "docs": "Writes out_move_vec[0..2] from D-pad or analog movement input, using heading_angle in the low-16-bit / 12-bit fixed-point angle domain for Math_SinCosFP12. The native return is ignored arithmetic status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 600,
          "symbol_index": 600,
          "accessor": "DTTR_PCDOGS_F_Input_CalculateMovementVector",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_CALCULATE_MOVEMENT_VECTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_CALCULATE_MOVEMENT_VECTOR"
        }
      }
    },
    "Input_CalculateMovementVector_DirectionDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4468604,
            "rva": 274300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CalculateMovementVector"
                },
                "instr_offset": 41,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4475820,
            "rva": 281516,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CalculateMovementVector"
                },
                "instr_offset": 41,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4475756,
            "rva": 281452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CalculateMovementVector"
                },
                "instr_offset": 41,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_CalculateMovementVector"
            },
            "instr_offset": 41,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_CalculateMovementVector",
          "instr_offset": 41,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Ten-entry uint32_t jump table used by Input_CalculateMovementVector to map low-nibble direction masks to heading positions; kept as read-only scalar/base table metadata.",
        "sdk": {
          "id": 64,
          "symbol_index": 64,
          "accessor": "DTTR_PCDOGS_D_Input_CalculateMovementVector_DirectionDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_CALCULATE_MOVEMENT_VECTOR_DIRECTION_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_CALCULATE_MOVEMENT_VECTOR_DIRECTION_DISPATCH_TABLE"
        }
      }
    },
    "Input_CheckButtonState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4210896,
            "rva": 16592,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckButtonState_ControlCodeDispatchIndexTable"
                },
                "instr_offset": 124,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckButtonState_ControlCodeDispatchTable"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 537,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 617,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckButtonState"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4211344,
            "rva": 17040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckButtonState_ControlCodeDispatchIndexTable"
                },
                "instr_offset": 124,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckButtonState_ControlCodeDispatchTable"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 537,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 617,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckButtonState"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4211344,
            "rva": 17040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckButtonState_ControlCodeDispatchIndexTable"
                },
                "instr_offset": 124,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckButtonState_ControlCodeDispatchTable"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 537,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 617,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckButtonState"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "state_index",
              "type": "int32_t",
              "docs": "Input state slot to query; invalid or empty slots fall back to slot zero."
            },
            {
              "name": "state_table",
              "type": "Input_State*",
              "docs": "Two-entry input state table used by scripts and menus."
            },
            {
              "name": "control_code",
              "type": "int32_t",
              "docs": "Button bit index or extended axis/control selector."
            },
            {
              "name": "mode_or_threshold",
              "type": "int32_t",
              "docs": "Button expected-state flag or axis threshold percentage, depending on control_code."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_CheckButtonState_ControlCodeDispatchTable"
            },
            "instr_offset": 130,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_CheckButtonState_ControlCodeDispatchIndexTable"
            },
            "instr_offset": 124,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FA 00 00 00 20 0F 84 ??",
          "match_offset": -39
        },
        "docs": "Evaluates a button or axis control code against sampled input state. Button queries return 0/100; axis queries return scaled Q12 magnitude or threshold results.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 55,
          "symbol_index": 55,
          "accessor": "DTTR_PCDOGS_F_Input_CheckButtonState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_CHECK_BUTTON_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_CHECK_BUTTON_STATE"
        }
      }
    },
    "Input_CheckButtonState_ControlCodeDispatchIndexTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4211440,
            "rva": 17136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 124,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4211888,
            "rva": 17584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 124,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4211888,
            "rva": 17584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 124,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_CheckButtonState"
            },
            "instr_offset": 124,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_CheckButtonState",
          "instr_offset": 124,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Uint8_t lookup table mapping control codes onto input_control_code_dispatch_table slots.",
        "sdk": {
          "id": 19,
          "symbol_index": 19,
          "accessor": "DTTR_PCDOGS_D_Input_CheckButtonState_ControlCodeDispatchIndexTable",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_CHECK_BUTTON_STATE_CONTROL_CODE_DISPATCH_INDEX_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_CHECK_BUTTON_STATE_CONTROL_CODE_DISPATCH_INDEX_TABLE"
        }
      }
    },
    "Input_CheckButtonState_ControlCodeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4211400,
            "rva": 17096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4211848,
            "rva": 17544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4211848,
            "rva": 17544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_CheckButtonState"
            },
            "instr_offset": 130,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_CheckButtonState",
          "instr_offset": 130,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Ten-entry uint32_t jump table used by Input_CheckButtonState for control codes 0x20..0x47. Slots 0..8 handle aggregate direction axes and signed axis thresholds; slot 9 is the default return-zero path for unused codes 0x24..0x3f.",
        "sdk": {
          "id": 18,
          "symbol_index": 18,
          "accessor": "DTTR_PCDOGS_D_Input_CheckButtonState_ControlCodeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_CHECK_BUTTON_STATE_CONTROL_CODE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_CHECK_BUTTON_STATE_CONTROL_CODE_DISPATCH_TABLE"
        }
      }
    },
    "Input_CheckCheatCodeSequence": {
      "function": {
        "analysis": {
          "en": {
            "address": 4378752,
            "rva": 184448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_Index"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_LastPressedButton"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "Write"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_PreviousButton"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_Sequence"
                },
                "instr_offset": 30,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4383216,
            "rva": 188912,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_Index"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_LastPressedButton"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "Write"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_PreviousButton"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_Sequence"
                },
                "instr_offset": 30,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4383184,
            "rva": 188880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_Index"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_LastPressedButton"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "Write"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_PreviousButton"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CheckCheatCodeSequence_Sequence"
                },
                "instr_offset": 30,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_CheckCheatCodeSequence_Sequence"
            },
            "instr_offset": 30,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_CheckCheatCodeSequence_LastPressedButton"
            },
            "instr_offset": 11,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "Write"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_CheckCheatCodeSequence_Index"
            },
            "instr_offset": 20,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_CheckCheatCodeSequence_PreviousButton"
            },
            "instr_offset": 5,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? A3 ?? ?? ?? ?? 3B C1",
          "match_offset": -10
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 387,
          "symbol_index": 387,
          "accessor": "DTTR_PCDOGS_F_Input_CheckCheatCodeSequence",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_CHECK_CHEAT_CODE_SEQUENCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_CHECK_CHEAT_CODE_SEQUENCE"
        }
      }
    },
    "Input_CheckCheatCodeSequence_Index": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832016,
            "rva": 637712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840920,
            "rva": 646616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840904,
            "rva": 646600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_CheckCheatCodeSequence"
            },
            "instr_offset": 20,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 619,
          "symbol_index": 619,
          "accessor": "DTTR_PCDOGS_D_Input_CheckCheatCodeSequence_Index",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_CHECK_CHEAT_CODE_SEQUENCE_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_CHECK_CHEAT_CODE_SEQUENCE_INDEX"
        }
      }
    },
    "Input_CheckCheatCodeSequence_LastPressedButton": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831980,
            "rva": 637676,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "Write"
              }
            ]
          },
          "eu": {
            "address": 4840884,
            "rva": 646580,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "Write"
              }
            ]
          },
          "sc": {
            "address": 4840868,
            "rva": 646564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "Write"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_CheckCheatCodeSequence"
            },
            "instr_offset": 11,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "Write"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Write-only latch of the most recently pressed button recorded by Input_CheckCheatCodeSequence; not a sequence-progress counter.",
        "sdk": {
          "id": 608,
          "symbol_index": 608,
          "accessor": "DTTR_PCDOGS_D_Input_CheckCheatCodeSequence_LastPressedButton",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_CHECK_CHEAT_CODE_SEQUENCE_LAST_PRESSED_BUTTON",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_CHECK_CHEAT_CODE_SEQUENCE_LAST_PRESSED_BUTTON"
        }
      }
    },
    "Input_CheckCheatCodeSequence_PreviousButton": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832020,
            "rva": 637716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840924,
            "rva": 646620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840908,
            "rva": 646604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_CheckCheatCodeSequence"
            },
            "instr_offset": 5,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 620,
          "symbol_index": 620,
          "accessor": "DTTR_PCDOGS_D_Input_CheckCheatCodeSequence_PreviousButton",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_CHECK_CHEAT_CODE_SEQUENCE_PREVIOUS_BUTTON",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_CHECK_CHEAT_CODE_SEQUENCE_PREVIOUS_BUTTON"
        }
      }
    },
    "Input_CheckCheatCodeSequence_Sequence": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525868,
            "rva": 331564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 30,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534048,
            "rva": 339744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 30,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534048,
            "rva": 339744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 30,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_CheckCheatCodeSequence"
            },
            "instr_offset": 30,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 222,
          "symbol_index": 222,
          "accessor": "DTTR_PCDOGS_D_Input_CheckCheatCodeSequence_Sequence",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_CHECK_CHEAT_CODE_SEQUENCE_SEQUENCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_CHECK_CHEAT_CODE_SEQUENCE_SEQUENCE"
        }
      }
    },
    "Input_ClearState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4476912,
            "rva": 282608,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ClearState_Buffer"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ResetState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484752,
            "rva": 290448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ClearState_Buffer"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ResetState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484528,
            "rva": 290224,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ClearState_Buffer"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ResetState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_ClearState_Buffer"
            },
            "instr_offset": 8,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "57 B9 40 00 00 00 33 C0 BF ?? ?? ?? ?? F3 AB 5F C3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 A1 ??",
          "match_offset": 0
        },
        "docs": "Zeros the input_state_buffer raw input/VK clear buffer; native callers ignore the constant-zero native return metadata.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 632,
          "symbol_index": 632,
          "accessor": "DTTR_PCDOGS_F_Input_ClearState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_CLEAR_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_CLEAR_STATE"
        }
      }
    },
    "Input_ClearState_Buffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 6438956,
            "rva": 2244652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ClearState"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449188,
            "rva": 2254884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ClearState"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6448612,
            "rva": 2254308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ClearState"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ClearState"
            },
            "instr_offset": 8,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t[0x100]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ClearState",
          "instr_offset": 8,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Raw input/VK state clear buffer zeroed by Input_ClearState. Public fixed-array accessors use pointer-to-array read and write signatures.",
        "sdk": {
          "id": 728,
          "symbol_index": 728,
          "accessor": "DTTR_PCDOGS_D_Input_ClearState_Buffer",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_CLEAR_STATE_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_CLEAR_STATE_BUFFER"
        }
      }
    },
    "Input_ControllerHammerheadProfileName": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507296,
            "rva": 2312992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderMusicSelection"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518560,
            "rva": 2324256,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderMusicSelection"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517984,
            "rva": 2323680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderMusicSelection"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderMusicSelection"
            },
            "instr_offset": 26,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Hammerhead controller profile name/preset metadata rendered from menu paths.",
        "sdk": {
          "id": 826,
          "symbol_index": 826,
          "accessor": "DTTR_PCDOGS_D_Input_ControllerHammerheadProfileName",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_CONTROLLER_HAMMERHEAD_PROFILE_NAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_CONTROLLER_HAMMERHEAD_PROFILE_NAME"
        }
      }
    },
    "Input_CurrentX": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505572,
            "rva": 2311268,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CalculateMovementVector"
                },
                "instr_offset": 173,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515812,
            "rva": 2321508,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CalculateMovementVector"
                },
                "instr_offset": 173,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515236,
            "rva": 2320932,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CalculateMovementVector"
                },
                "instr_offset": 173,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_CalculateMovementVector"
            },
            "instr_offset": 173,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Input_Update"
            },
            "instr_offset": 158,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Input/movement local value used by Input_Update and Input_CalculateMovementVector.",
        "sdk": {
          "id": 748,
          "symbol_index": 748,
          "accessor": "DTTR_PCDOGS_D_Input_CurrentX",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_CURRENT_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_CURRENT_X"
        }
      }
    },
    "Input_Event": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "type",
            "offset": 0,
            "doc": "Input event type discriminator used by keyboard, gamepad, and menu/event handling."
          },
          {
            "type": "int32_t",
            "name": "value",
            "offset": 4,
            "doc": "Input event payload, usually a button/key value associated with the event type."
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Compact input event record, passed through game input processing.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Input_Event"
        }
      }
    },
    "Input_FormatButtonName": {
      "function": {
        "analysis": {
          "en": {
            "address": 4447648,
            "rva": 253344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ButtonNameStringIDs"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_FormatButtonName_NoKeyAssigned"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_FormatButtonName_NoKeyAssignedString"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetButtonIndex"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4452912,
            "rva": 258608,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ButtonNameStringIDs"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_FormatButtonName_NoKeyAssigned"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_FormatButtonName_NoKeyAssignedString"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetButtonIndex"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4452880,
            "rva": 258576,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ButtonNameStringIDs"
                },
                "instr_offset": 60,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_FormatButtonName_NoKeyAssigned"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_FormatButtonName_NoKeyAssignedString"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetButtonIndex"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "control_code",
              "type": "int32_t",
              "docs": "Virtual-key or gamepad control code; codes above 0xff are normalized by subtracting 0x2e8 for the string-id table."
            },
            {
              "name": "button_mask",
              "type": "uint32_t",
              "docs": "Input button mask used to choose the destination name-cache slot."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_ButtonNameStringIDs"
            },
            "instr_offset": 60,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_FormatButtonName_NoKeyAssigned"
            },
            "instr_offset": 112,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_FormatButtonName_NoKeyAssignedString"
            },
            "instr_offset": 92,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 56 50 E8 ??",
          "match_offset": 0
        },
        "docs": "Caches the localized display name for a control binding in the slot selected by button_mask and lazily allocates the shared 'No key assigned' string. Known native callers use the side effect and ignore the mixed pointer/sprintf-count native return value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 525,
          "symbol_index": 525,
          "accessor": "DTTR_PCDOGS_F_Input_FormatButtonName",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_FORMAT_BUTTON_NAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_FORMAT_BUTTON_NAME"
        }
      }
    },
    "Input_FormatButtonName_NoKeyAssigned": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528068,
            "rva": 333764,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536264,
            "rva": 341960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536264,
            "rva": 341960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_FormatButtonName"
            },
            "instr_offset": 112,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "char",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_FormatButtonName",
          "instr_offset": 112,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First byte/base of the inline \"No key assigned\" string literal used by Input_FormatButtonName.",
        "sdk": {
          "id": 279,
          "symbol_index": 279,
          "accessor": "DTTR_PCDOGS_D_Input_FormatButtonName_NoKeyAssigned",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_FORMAT_BUTTON_NAME_NO_KEY_ASSIGNED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_FORMAT_BUTTON_NAME_NO_KEY_ASSIGNED"
        }
      }
    },
    "Input_FormatButtonName_NoKeyAssignedString": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506864,
            "rva": 2312560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518128,
            "rva": 2323824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517552,
            "rva": 2323248,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_FormatButtonName"
            },
            "instr_offset": 92,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "char*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_FormatButtonName",
          "instr_offset": 92,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Cached heap string for \"No key assigned\"; slot 12 of input_button_name_buffers shares this address.",
        "sdk": {
          "id": 779,
          "symbol_index": 779,
          "accessor": "DTTR_PCDOGS_D_Input_FormatButtonName_NoKeyAssignedString",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_FORMAT_BUTTON_NAME_NO_KEY_ASSIGNED_STRING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_FORMAT_BUTTON_NAME_NO_KEY_ASSIGNED_STRING"
        }
      }
    },
    "Input_GamepadButtonFlags": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4446310,
            "rva": 252006,
            "image_base": 4194304
          },
          "eu": {
            "address": 4451574,
            "rva": 257270,
            "image_base": 4194304
          },
          "sc": {
            "address": 4451542,
            "rva": 257238,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "8B 15 ?? ?? ?? ?? 8B 06 0B C2 89 06 81 FB BC 02 00 00"
      }
    },
    "Input_GetButtonIndex": {
      "function": {
        "analysis": {
          "en": {
            "address": 4447440,
            "rva": 253136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_GetButtonIndex_MaskDispatchTable"
                },
                "instr_offset": 25,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_GetButtonIndex_MaskIndexTable"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4452704,
            "rva": 258400,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_GetButtonIndex_MaskDispatchTable"
                },
                "instr_offset": 25,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_GetButtonIndex_MaskIndexTable"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4452672,
            "rva": 258368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_GetButtonIndex_MaskDispatchTable"
                },
                "instr_offset": 25,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_GetButtonIndex_MaskIndexTable"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "control_mask",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_GetButtonIndex_MaskDispatchTable"
            },
            "instr_offset": 25,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_GetButtonIndex_MaskIndexTable"
            },
            "instr_offset": 19,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 40 00 00 74 ?? 3D ??",
          "match_offset": -113
        },
        "docs": "Maps an input button/control bitmask to the compact button-name index used by Input_FormatButtonName. Low masks 1..0x20 dispatch through input_button_mask_index_table; 0x40, 0x80, 0x400, 0x800, 0x4000, and 0x8000 are handled by direct compares; returns 12 for unrecognized masks.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 524,
          "symbol_index": 524,
          "accessor": "DTTR_PCDOGS_F_Input_GetButtonIndex",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_GET_BUTTON_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_GET_BUTTON_INDEX"
        }
      }
    },
    "Input_GetButtonIndex_MaskDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4447584,
            "rva": 253280,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetButtonIndex"
                },
                "instr_offset": 25,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4452848,
            "rva": 258544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetButtonIndex"
                },
                "instr_offset": 25,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4452816,
            "rva": 258512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetButtonIndex"
                },
                "instr_offset": 25,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_GetButtonIndex"
            },
            "instr_offset": 25,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_GetButtonIndex",
          "instr_offset": 25,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Seven-entry uint32_t jump table mapping low input button bitmasks 1,2,4,8,0x10,0x20 through input_button_mask_index_table; slot 6 is the default unrecognized-mask path.",
        "sdk": {
          "id": 57,
          "symbol_index": 57,
          "accessor": "DTTR_PCDOGS_D_Input_GetButtonIndex_MaskDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_GET_BUTTON_INDEX_MASK_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_GET_BUTTON_INDEX_MASK_DISPATCH_TABLE"
        }
      }
    },
    "Input_GetButtonIndex_MaskIndexTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4447612,
            "rva": 253308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetButtonIndex"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4452876,
            "rva": 258572,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetButtonIndex"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4452844,
            "rva": 258540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetButtonIndex"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_GetButtonIndex"
            },
            "instr_offset": 19,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_GetButtonIndex",
          "instr_offset": 19,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Uint8_t lookup table for Input_GetButtonIndex masks 1..0x20; larger recognized masks are handled by direct compares.",
        "sdk": {
          "id": 58,
          "symbol_index": 58,
          "accessor": "DTTR_PCDOGS_D_Input_GetButtonIndex_MaskIndexTable",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_GET_BUTTON_INDEX_MASK_INDEX_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_GET_BUTTON_INDEX_MASK_INDEX_TABLE"
        }
      }
    },
    "Input_GetButtonString": {
      "function": {
        "analysis": {
          "en": {
            "address": 4447792,
            "rva": 253488,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 1100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4453056,
            "rva": 258752,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 2097,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 2247,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 181,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4453024,
            "rva": 258720,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 2077,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 2227,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 181,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "button_code",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 3D FF 00 00 00 7E ?? 2D E8 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 526,
          "symbol_index": 526,
          "accessor": "DTTR_PCDOGS_F_Input_GetButtonString",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_GET_BUTTON_STRING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_GET_BUTTON_STRING"
        }
      }
    },
    "Input_GetDeviceStateBuffer": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301136,
            "rva": 106832,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4301616,
            "rva": 107312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4301616,
            "rva": 107312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            },
            {
              "name": "state_size",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 57 8B 7C 24 10 57 E8 ?? ?? ?? ?? 83 C4 04 8B",
          "match_offset": 0
        },
        "docs": "Allocates a state buffer, calls IDirectInputDevice::GetDeviceState(stateSize, buffer), and returns the buffer on success or NULL on failure.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 243,
          "symbol_index": 243,
          "accessor": "DTTR_PCDOGS_F_Input_GetDeviceStateBuffer",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_GET_DEVICE_STATE_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_GET_DEVICE_STATE_BUFFER"
        }
      }
    },
    "Input_GetJoystickAxisRz": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301808,
            "rva": 107504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302288,
            "rva": 107984,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302288,
            "rva": 107984,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "state",
              "type": "struct DIJOYSTATE*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8B 40 14 C3 90 90 90 90 90 90 90 90 8B 44 24 08 8B 4C 24 04 8A 44 01 30 C3 90 90 90 8B 44 24 08 8B 4C 24 04 50 51 E8 ??",
          "match_offset": 0
        },
        "docs": "Returns DIJOYSTATE.lRz, the raw twist/alternate horizontal axis sampled by Input_ReadGamepad.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 257,
          "symbol_index": 257,
          "accessor": "DTTR_PCDOGS_F_Input_GetJoystickAxisRz",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_GET_JOYSTICK_AXIS_RZ",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_GET_JOYSTICK_AXIS_RZ"
        }
      }
    },
    "Input_GetJoystickAxisX": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301776,
            "rva": 107472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302256,
            "rva": 107952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302256,
            "rva": 107952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "state",
              "type": "struct DIJOYSTATE*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8B 00 C3 90 90 90 90 90 90 90 90 90 8B 44 24 04 8B 40 ?? C3",
          "match_offset": 0
        },
        "docs": "Returns DIJOYSTATE.lX.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 255,
          "symbol_index": 255,
          "accessor": "DTTR_PCDOGS_F_Input_GetJoystickAxisX",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_GET_JOYSTICK_AXIS_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_GET_JOYSTICK_AXIS_X"
        }
      }
    },
    "Input_GetJoystickAxisY": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301792,
            "rva": 107488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302272,
            "rva": 107968,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302272,
            "rva": 107968,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "state",
              "type": "struct DIJOYSTATE*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8B 40 04 C3 90 90 90 90 90 90 90 90 8B 44 24 04 8B 40 14 C3 90 90 90 90 90 90 90 90 8B 44 24 08 8B 4C 24 04 8A 44 01 30 C3 90 90 90 8B 44 24 08 8B 4C 24 04 50 51 E8 ??",
          "match_offset": 0
        },
        "docs": "Returns DIJOYSTATE.lY, the raw vertical axis sampled by Input_ReadGamepad.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 256,
          "symbol_index": 256,
          "accessor": "DTTR_PCDOGS_F_Input_GetJoystickAxisY",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_GET_JOYSTICK_AXIS_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_GET_JOYSTICK_AXIS_Y"
        }
      }
    },
    "Input_GetJoystickButtonByte": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301824,
            "rva": 107520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302304,
            "rva": 108000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302304,
            "rva": 108000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint8_t",
          "params": [
            {
              "name": "state",
              "type": "struct DIJOYSTATE*"
            },
            {
              "name": "button_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 8B 4C 24 04 8A 44 01 30 C3 90 90 90 8B 44 24 08 8B 4C 24 04 50 51 E8 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 258,
          "symbol_index": 258,
          "accessor": "DTTR_PCDOGS_F_Input_GetJoystickButtonByte",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_GET_JOYSTICK_BUTTON_BYTE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_GET_JOYSTICK_BUTTON_BYTE"
        }
      }
    },
    "Input_GetPressedButton": {
      "function": {
        "analysis": {
          "en": {
            "address": 4447888,
            "rva": 253584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_GetPressedButton_JoystickAvailable"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisRz"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisX"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisY"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 781,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 997,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 1202,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4453152,
            "rva": 258848,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_GetPressedButton_JoystickAvailable"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisRz"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisX"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisY"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 786,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 1024,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 1246,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4453120,
            "rva": 258816,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_GetPressedButton_JoystickAvailable"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisRz"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisX"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisY"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 786,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 1024,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 1246,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_GetPressedButton_JoystickAvailable"
            },
            "instr_offset": 31,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 57 8B 3D ?? ?? ?? ?? 33 F6",
          "match_offset": 0
        },
        "docs": "Returns the first pressed keyboard virtual-key code, or gamepad codes 0x3e8..0x3fa for axis/button input, or -1 when no control is pressed.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 14,
          "symbol_index": 14,
          "accessor": "DTTR_PCDOGS_F_Input_GetPressedButton",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_GET_PRESSED_BUTTON",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_GET_PRESSED_BUTTON"
        }
      }
    },
    "Input_GetPressedButton_JoystickAvailable": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908016,
            "rva": 22713712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919280,
            "rva": 22724976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918704,
            "rva": 22724400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_GetPressedButton"
            },
            "instr_offset": 31,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_GetPressedButton",
          "instr_offset": 31,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Non-zero when joystick/gamepad input is available; allows gamepad polling in Input_GetPressedButton.",
        "sdk": {
          "id": 2,
          "symbol_index": 2,
          "accessor": "DTTR_PCDOGS_D_Input_GetPressedButton_JoystickAvailable",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_GET_PRESSED_BUTTON_JOYSTICK_AVAILABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_GET_PRESSED_BUTTON_JOYSTICK_AVAILABLE"
        }
      }
    },
    "Input_InitializeButtonMappings": {
      "function": {
        "analysis": {
          "en": {
            "address": 4445024,
            "rva": 250720,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_Map"
                },
                "instr_offset": 369,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_MapAlt"
                },
                "instr_offset": 479,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_Player1DownKey"
                },
                "instr_offset": 359,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_Player2DownButton"
                },
                "instr_offset": 469,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 253,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 322,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadAlternateFromINI"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4450288,
            "rva": 255984,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_Map"
                },
                "instr_offset": 369,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_MapAlt"
                },
                "instr_offset": 479,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_Player1DownKey"
                },
                "instr_offset": 359,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_Player2DownButton"
                },
                "instr_offset": 469,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 253,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 322,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadAlternateFromINI"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 912,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4450256,
            "rva": 255952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_Map"
                },
                "instr_offset": 369,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_MapAlt"
                },
                "instr_offset": 479,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_Player1DownKey"
                },
                "instr_offset": 359,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeButtonMappings_Player2DownButton"
                },
                "instr_offset": 469,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 253,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 322,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadAlternateFromINI"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 912,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeButtonMappings_Player1DownKey"
            },
            "instr_offset": 359,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeButtonMappings_Map"
            },
            "instr_offset": 369,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeButtonMappings_Player2DownButton"
            },
            "instr_offset": 469,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeButtonMappings_MapAlt"
            },
            "instr_offset": 479,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? 00 00 00 00 68 80",
          "match_offset": -50
        },
        "docs": "Free and rebuild the keyboard mapping arrays, register the default control masks, and initialize the player binding blocks.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 517,
          "symbol_index": 517,
          "accessor": "DTTR_PCDOGS_F_Input_InitializeButtonMappings",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_INITIALIZE_BUTTON_MAPPINGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_INITIALIZE_BUTTON_MAPPINGS"
        }
      }
    },
    "Input_InitializeButtonMappings_Map": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506988,
            "rva": 2312684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 369,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518252,
            "rva": 2323948,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 369,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517676,
            "rva": 2323372,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 369,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeButtonMappings"
            },
            "instr_offset": 369,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t[8]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_InitializeButtonMappings",
          "instr_offset": 369,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Eight adjacent player-1 button mapping dwords after the down-key entry.",
        "sdk": {
          "id": 805,
          "symbol_index": 805,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeButtonMappings_Map",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_BUTTON_MAPPINGS_MAP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_BUTTON_MAPPINGS_MAP"
        }
      }
    },
    "Input_InitializeButtonMappings_MapAlt": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507040,
            "rva": 2312736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 479,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518304,
            "rva": 2324000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 479,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517728,
            "rva": 2323424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 479,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeButtonMappings"
            },
            "instr_offset": 479,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t[8]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_InitializeButtonMappings",
          "instr_offset": 479,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Eight adjacent player-2/gamepad button mapping dwords after the down-button entry.",
        "sdk": {
          "id": 809,
          "symbol_index": 809,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeButtonMappings_MapAlt",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_BUTTON_MAPPINGS_MAP_ALT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_BUTTON_MAPPINGS_MAP_ALT"
        }
      }
    },
    "Input_InitializeButtonMappings_Player1DownKey": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506984,
            "rva": 2312680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 359,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518248,
            "rva": 2323944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 359,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517672,
            "rva": 2323368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 359,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeButtonMappings"
            },
            "instr_offset": 359,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 804,
          "symbol_index": 804,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeButtonMappings_Player1DownKey",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_BUTTON_MAPPINGS_PLAYER1_DOWN_KEY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_BUTTON_MAPPINGS_PLAYER1_DOWN_KEY"
        }
      }
    },
    "Input_InitializeButtonMappings_Player2DownButton": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507036,
            "rva": 2312732,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 469,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518300,
            "rva": 2323996,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 469,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517724,
            "rva": 2323420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 469,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeButtonMappings"
            },
            "instr_offset": 469,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 808,
          "symbol_index": 808,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeButtonMappings_Player2DownButton",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_BUTTON_MAPPINGS_PLAYER2_DOWN_BUTTON",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_BUTTON_MAPPINGS_PLAYER2_DOWN_BUTTON"
        }
      }
    },
    "Input_InitializeControllerMappings": {
      "function": {
        "analysis": {
          "en": {
            "address": 4445584,
            "rva": 251280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_GravisButtons"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_GravisGamepad"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_HammerheadFx"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_MsSidewinder"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_SidewinderButtons"
                },
                "instr_offset": 148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_WingmanButtonRef"
                },
                "instr_offset": 366,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_WingmanRumblepad"
                },
                "instr_offset": 237,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadAlternateFromINI"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4450848,
            "rva": 256544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_GravisButtons"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_GravisGamepad"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_HammerheadFx"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_MsSidewinder"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_SidewinderButtons"
                },
                "instr_offset": 148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_WingmanButtonRef"
                },
                "instr_offset": 366,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_WingmanRumblepad"
                },
                "instr_offset": 237,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadAlternateFromINI"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4450816,
            "rva": 256512,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_GravisButtons"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_GravisGamepad"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_HammerheadFx"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_MsSidewinder"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_SidewinderButtons"
                },
                "instr_offset": 148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_WingmanButtonRef"
                },
                "instr_offset": 366,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeControllerMappings_WingmanRumblepad"
                },
                "instr_offset": 237,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_LoadAlternateFromINI"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeControllerMappings_WingmanRumblepad"
            },
            "instr_offset": 237,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeControllerMappings_GravisGamepad"
            },
            "instr_offset": 138,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeControllerMappings_MsSidewinder"
            },
            "instr_offset": 39,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeControllerMappings_HammerheadFx"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeControllerMappings_SidewinderButtons"
            },
            "instr_offset": 148,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeControllerMappings_GravisButtons"
            },
            "instr_offset": 247,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeControllerMappings_WingmanButtonRef"
            },
            "instr_offset": 366,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 55 56 57 68 ?? ?? ?? ?? 68",
          "match_offset": 0
        },
        "docs": "Initialize built-in controller preset names and 10-button mapping tables for Hammerhead FX, Microsoft Sidewinder, Gravis Gamepad Pro, and Wingman RumblePad.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 518,
          "symbol_index": 518,
          "accessor": "DTTR_PCDOGS_F_Input_InitializeControllerMappings",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_INITIALIZE_CONTROLLER_MAPPINGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_INITIALIZE_CONTROLLER_MAPPINGS"
        }
      }
    },
    "Input_InitializeControllerMappings_GravisButtons": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507664,
            "rva": 2313360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518928,
            "rva": 2324624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518352,
            "rva": 2324048,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeControllerMappings"
            },
            "instr_offset": 247,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t[10]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_InitializeControllerMappings",
          "instr_offset": 247,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Ten adjacent Gravis button preset dwords inside a controller profile record.",
        "sdk": {
          "id": 829,
          "symbol_index": 829,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeControllerMappings_GravisButtons",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_GRAVIS_BUTTONS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_GRAVIS_BUTTONS"
        }
      }
    },
    "Input_InitializeControllerMappings_GravisGamepad": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528008,
            "rva": 333704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536204,
            "rva": 341900,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536204,
            "rva": 341900,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeControllerMappings"
            },
            "instr_offset": 138,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 276,
          "symbol_index": 276,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeControllerMappings_GravisGamepad",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_GRAVIS_GAMEPAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_GRAVIS_GAMEPAD"
        }
      }
    },
    "Input_InitializeControllerMappings_HammerheadFx": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528052,
            "rva": 333748,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536248,
            "rva": 341944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536248,
            "rva": 341944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeControllerMappings"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 278,
          "symbol_index": 278,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeControllerMappings_HammerheadFx",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_HAMMERHEAD_FX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_HAMMERHEAD_FX"
        }
      }
    },
    "Input_InitializeControllerMappings_MsSidewinder": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528028,
            "rva": 333724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536224,
            "rva": 341920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536224,
            "rva": 341920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeControllerMappings"
            },
            "instr_offset": 39,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 277,
          "symbol_index": 277,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeControllerMappings_MsSidewinder",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_MS_SIDEWINDER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_MS_SIDEWINDER"
        }
      }
    },
    "Input_InitializeControllerMappings_SidewinderButtons": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507524,
            "rva": 2313220,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518788,
            "rva": 2324484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518212,
            "rva": 2323908,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 148,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeControllerMappings"
            },
            "instr_offset": 148,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t[10]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_InitializeControllerMappings",
          "instr_offset": 148,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Ten adjacent SideWinder button preset dwords inside a controller profile record.",
        "sdk": {
          "id": 828,
          "symbol_index": 828,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeControllerMappings_SidewinderButtons",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_SIDEWINDER_BUTTONS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_SIDEWINDER_BUTTONS"
        }
      }
    },
    "Input_InitializeControllerMappings_WingmanButtonRef": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507804,
            "rva": 2313500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 366,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519068,
            "rva": 2324764,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 366,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518492,
            "rva": 2324188,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 366,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeControllerMappings"
            },
            "instr_offset": 366,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_InitializeControllerMappings",
          "instr_offset": 366,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "One WingMan button preset dword; surrounding WingMan writes are individual profile fields.",
        "sdk": {
          "id": 830,
          "symbol_index": 830,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeControllerMappings_WingmanButtonRef",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_WINGMAN_BUTTON_REF",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_WINGMAN_BUTTON_REF"
        }
      }
    },
    "Input_InitializeControllerMappings_WingmanRumblepad": {
      "data": {
        "analysis": {
          "en": {
            "address": 4527988,
            "rva": 333684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 237,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536184,
            "rva": 341880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 237,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536184,
            "rva": 341880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeControllerMappings"
                },
                "instr_offset": 237,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeControllerMappings"
            },
            "instr_offset": 237,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 275,
          "symbol_index": 275,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeControllerMappings_WingmanRumblepad",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_WINGMAN_RUMBLEPAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_CONTROLLER_MAPPINGS_WINGMAN_RUMBLEPAD"
        }
      }
    },
    "Input_InitializeInputSubsystem": {
      "function": {
        "analysis": {
          "en": {
            "address": 4446016,
            "rva": 251712,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeInputSubsystem_Initialized"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ClearState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetForceFeedbackScale"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 402,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4451280,
            "rva": 256976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeInputSubsystem_Initialized"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ClearState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetForceFeedbackScale"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 411,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4451248,
            "rva": 256944,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_InitializeInputSubsystem_Initialized"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ClearState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetForceFeedbackScale"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 411,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "hwnd",
              "type": "HWND",
              "docs": "Main game window handle forwarded to DirectInput joystick initialization."
            },
            {
              "name": "hinstance",
              "type": "HINSTANCE",
              "docs": "Application instance handle forwarded to DirectInput joystick initialization."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_InitializeInputSubsystem_Initialized"
            },
            "instr_offset": 25,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? 8B 44 24 08 8B",
          "match_offset": 0
        },
        "docs": "Clears input state, initializes DirectInput joystick/force-feedback support for the game window, and sets the global force-feedback scale.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 12,
          "symbol_index": 12,
          "accessor": "DTTR_PCDOGS_F_Input_InitializeInputSubsystem",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_INITIALIZE_INPUT_SUBSYSTEM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_INITIALIZE_INPUT_SUBSYSTEM"
        }
      }
    },
    "Input_InitializeInputSubsystem_Initialized": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908016,
            "rva": 22713712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919280,
            "rva": 22724976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918704,
            "rva": 22724400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_InitializeInputSubsystem"
            },
            "instr_offset": 25,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 866,
          "symbol_index": 866,
          "accessor": "DTTR_PCDOGS_D_Input_InitializeInputSubsystem_Initialized",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_INITIALIZE_INPUT_SUBSYSTEM_INITIALIZED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_INITIALIZE_INPUT_SUBSYSTEM_INITIALIZED"
        }
      }
    },
    "Input_IsJoystickButtonPressed": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301840,
            "rva": 107536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickButtonByte"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 703,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 735,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 865,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302320,
            "rva": 108016,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickButtonByte"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 703,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 735,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 865,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302320,
            "rva": 108016,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickButtonByte"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 703,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 735,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 865,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "state",
              "type": "struct DIJOYSTATE*"
            },
            {
              "name": "button_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 8B 4C 24 04 50 51 E8 ?? ?? ?? ?? 25",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 259,
          "symbol_index": 259,
          "accessor": "DTTR_PCDOGS_F_Input_IsJoystickButtonPressed",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_IS_JOYSTICK_BUTTON_PRESSED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_IS_JOYSTICK_BUTTON_PRESSED"
        }
      }
    },
    "Input_IsKeyPressed": {
      "function": {
        "analysis": {
          "en": {
            "address": 4476944,
            "rva": 282640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_IsKeyPressed_MappingTablePtr"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_IsKeyPressed_MappingTableSize"
                },
                "instr_offset": 44,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 634,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 648,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484784,
            "rva": 290480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_IsKeyPressed_MappingTablePtr"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_IsKeyPressed_MappingTableSize"
                },
                "instr_offset": 44,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 657,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484560,
            "rva": 290256,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_IsKeyPressed_MappingTablePtr"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_IsKeyPressed_MappingTableSize"
                },
                "instr_offset": 44,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 657,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "scan_code",
              "type": "uint8_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_IsKeyPressed_MappingTableSize"
            },
            "instr_offset": 44,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_IsKeyPressed_MappingTablePtr"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 33 C9 85 C0 53",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 633,
          "symbol_index": 633,
          "accessor": "DTTR_PCDOGS_F_Input_IsKeyPressed",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_IS_KEY_PRESSED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_IS_KEY_PRESSED"
        }
      },
      "signature": {
        "analysis": {
          "en": {
            "address": 4476944,
            "rva": 282640,
            "image_base": 4194304
          },
          "eu": {
            "address": 4484784,
            "rva": 290480,
            "image_base": 4194304
          },
          "sc": {
            "address": 4484560,
            "rva": 290256,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "A1 ?? ?? ?? ?? 33 C9 85 C0 53"
      }
    },
    "Input_IsKeyPressedAsync": {
      "function": {
        "analysis": {
          "en": {
            "address": 4447856,
            "rva": 253552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 323,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 526,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4453120,
            "rva": 258816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 323,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 526,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4453088,
            "rva": 258784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 323,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 526,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "virtual_key",
              "type": "int32_t",
              "docs": "Win32 virtual-key code passed to GetAsyncKeyState."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 50 FF 15 ??",
          "match_offset": 0
        },
        "docs": "Calls GetAsyncKeyState(virtualKey) and returns 1 when the high-order key-down bit is set.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 527,
          "symbol_index": 527,
          "accessor": "DTTR_PCDOGS_F_Input_IsKeyPressedAsync",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_IS_KEY_PRESSED_ASYNC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_IS_KEY_PRESSED_ASYNC"
        }
      }
    },
    "Input_IsKeyPressed_MappingTablePtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541684,
            "rva": 347380,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4550020,
            "rva": 355716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549996,
            "rva": 355692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_IsKeyPressed"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 320,
          "symbol_index": 320,
          "accessor": "DTTR_PCDOGS_D_Input_IsKeyPressed_MappingTablePtr",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_IS_KEY_PRESSED_MAPPING_TABLE_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_IS_KEY_PRESSED_MAPPING_TABLE_PTR"
        }
      }
    },
    "Input_IsKeyPressed_MappingTableSize": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541680,
            "rva": 347376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 44,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4550016,
            "rva": 355712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 44,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549992,
            "rva": 355688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 44,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_IsKeyPressed"
            },
            "instr_offset": 44,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 319,
          "symbol_index": 319,
          "accessor": "DTTR_PCDOGS_D_Input_IsKeyPressed_MappingTableSize",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_IS_KEY_PRESSED_MAPPING_TABLE_SIZE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_IS_KEY_PRESSED_MAPPING_TABLE_SIZE"
        }
      }
    },
    "Input_JoystickAvailableAnchor": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4447919,
            "rva": 253615,
            "image_base": 4194304
          },
          "eu": {
            "address": 4453183,
            "rva": 258879,
            "image_base": 4194304
          },
          "sc": {
            "address": 4453151,
            "rva": 258847,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "A0 ?? ?? ?? ?? 84 C0 0F 84 ?? ?? ?? ?? A1"
      }
    },
    "Input_JoystickState": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I32",
            "name": "pos",
            "offset": 0,
            "doc": "DIJOYSTATE lX/lY/lZ axes; input paths threshold X/Y for gamepad controls."
          },
          {
            "type": "Math_Vec3I32",
            "name": "rot",
            "offset": 12,
            "doc": "DIJOYSTATE lRx/lRy/lRz axes; Rz is thresholded for gamepad controls."
          },
          {
            "type": "int32_t",
            "name": "sliders[2]",
            "offset": 24,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "pov_hat[4]",
            "offset": 32,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "rgb_buttons[32]",
            "offset": 48,
            "doc": "DIJOYSTATE.rgbButtons prefix read by Input_GetJoystickButtonByte for button lookup."
          }
        ],
        "size": 80,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "DirectInput joystick snapshot read by Input_ReadGamepad and Input_GetJoystickAxis* helpers. Values are frame-local input samples.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Input_JoystickState"
        }
      }
    },
    "Input_KeyboardMappingButtons": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4444255,
            "rva": 249951,
            "image_base": 4194304
          },
          "eu": {
            "address": 4449503,
            "rva": 255199,
            "image_base": 4194304
          },
          "sc": {
            "address": 4449471,
            "rva": 255167,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "8B 15 ?? ?? ?? ?? 50 56"
      }
    },
    "Input_KeyboardMappingKeys": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4444201,
            "rva": 249897,
            "image_base": 4194304
          },
          "eu": {
            "address": 4449449,
            "rva": 255145,
            "image_base": 4194304
          },
          "sc": {
            "address": 4449417,
            "rva": 255113,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "A3 ?? ?? ?? ?? A1 ?? ?? ?? ?? 8D 14 8D"
      }
    },
    "Input_MappingCount": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4444249,
            "rva": 249945,
            "image_base": 4194304
          },
          "eu": {
            "address": 4449497,
            "rva": 255193,
            "image_base": 4194304
          },
          "sc": {
            "address": 4449465,
            "rva": 255161,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "8B 0D ?? ?? ?? ?? 8B 15 ?? ?? ?? ?? 50"
      }
    },
    "Input_PollJoystickState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301712,
            "rva": 107408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_AcquireDevice"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetDeviceStateBuffer"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetDeviceStateBuffer"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302192,
            "rva": 107888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_AcquireDevice"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetDeviceStateBuffer"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetDeviceStateBuffer"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302192,
            "rva": 107888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_AcquireDevice"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetDeviceStateBuffer"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetDeviceStateBuffer"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "struct DIJOYSTATE*",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 06 FF 50 64 6A 50 56 E8 ?? ?? ?? ?? 83 C4 08 85 C0",
          "match_offset": -5
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 254,
          "symbol_index": 254,
          "accessor": "DTTR_PCDOGS_F_Input_PollJoystickState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_POLL_JOYSTICK_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_POLL_JOYSTICK_STATE"
        }
      }
    },
    "Input_ProcessWindowMessages": {
      "function": {
        "analysis": {
          "en": {
            "address": 4448176,
            "rva": 253872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ProcessWindowMessages_AcceleratorTable"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ProcessWindowMessages_ShouldQuit"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 690,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4453440,
            "rva": 259136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ProcessWindowMessages_AcceleratorTable"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ProcessWindowMessages_ShouldQuit"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 588,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4453408,
            "rva": 259104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ProcessWindowMessages_AcceleratorTable"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ProcessWindowMessages_ShouldQuit"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 588,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_ProcessWindowMessages_ShouldQuit"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ProcessWindowMessages_AcceleratorTable"
            },
            "instr_offset": 139,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 83 EC 1C",
          "match_offset": 0
        },
        "docs": "Pumps pending Win32 messages and updates the game quit flag when window processing requests shutdown.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 15,
          "symbol_index": 15,
          "accessor": "DTTR_PCDOGS_F_Input_ProcessWindowMessages",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_PROCESS_WINDOW_MESSAGES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_PROCESS_WINDOW_MESSAGES"
        }
      }
    },
    "Input_ProcessWindowMessages_AcceleratorTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506776,
            "rva": 2312472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518040,
            "rva": 2323736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517464,
            "rva": 2323160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ProcessWindowMessages"
            },
            "instr_offset": 139,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 772,
          "symbol_index": 772,
          "accessor": "DTTR_PCDOGS_D_Input_ProcessWindowMessages_AcceleratorTable",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_PROCESS_WINDOW_MESSAGES_ACCELERATOR_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_PROCESS_WINDOW_MESSAGES_ACCELERATOR_TABLE"
        }
      }
    },
    "Input_ProcessWindowMessages_ShouldQuit": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835912,
            "rva": 641608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844808,
            "rva": 650504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844792,
            "rva": 650488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ProcessWindowMessages"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ProcessWindowMessages",
          "instr_offset": 0,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Flag set by window-message processing for game exit.",
        "sdk": {
          "id": 6,
          "symbol_index": 6,
          "accessor": "DTTR_PCDOGS_D_Input_ProcessWindowMessages_ShouldQuit",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_PROCESS_WINDOW_MESSAGES_SHOULD_QUIT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_PROCESS_WINDOW_MESSAGES_SHOULD_QUIT"
        }
      }
    },
    "Input_ReadDevices": {
      "function": {
        "analysis": {
          "en": {
            "address": 4447168,
            "rva": 252864,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadKeyboard"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4452432,
            "rva": 258128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadKeyboard"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4452400,
            "rva": 258096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadKeyboard"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "player_index",
              "type": "int32_t",
              "docs": "Player/input slot index preserved for the Input_Update ABI."
            },
            {
              "name": "state",
              "type": "Input_State*",
              "docs": "Input state structure cleared, then updated from keyboard and gamepad devices."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "46 06 66 89 46 04 E8 ??",
          "match_offset": -20
        },
        "docs": "Clears one Input_State and combines keyboard and gamepad sampling into it; player_index is preserved for the ABI.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 521,
          "symbol_index": 521,
          "accessor": "DTTR_PCDOGS_F_Input_ReadDevices",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_READ_DEVICES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_READ_DEVICES"
        }
      }
    },
    "Input_ReadGamepad": {
      "function": {
        "analysis": {
          "en": {
            "address": 4446176,
            "rva": 251872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisInvRange"
                },
                "instr_offset": 213,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisRzNegativeMask"
                },
                "instr_offset": 501,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisRzPositiveMask"
                },
                "instr_offset": 521,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisScale"
                },
                "instr_offset": 219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisXNegativeMask"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisXPositiveMask"
                },
                "instr_offset": 114,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisYNegativeMask"
                },
                "instr_offset": 134,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisYPositiveMask"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button0Mask"
                },
                "instr_offset": 553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button10Mask"
                },
                "instr_offset": 877,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button11Mask"
                },
                "instr_offset": 909,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button12Mask"
                },
                "instr_offset": 941,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button1Mask"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button2Mask"
                },
                "instr_offset": 618,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button3Mask"
                },
                "instr_offset": 650,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button4Mask"
                },
                "instr_offset": 683,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button5Mask"
                },
                "instr_offset": 715,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button6Mask"
                },
                "instr_offset": 747,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button7Mask"
                },
                "instr_offset": 780,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button8Mask"
                },
                "instr_offset": 812,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button9Mask"
                },
                "instr_offset": 844,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_JoystickState"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisRz"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisX"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisY"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 703,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 735,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 865,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 960,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadDevices"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4451440,
            "rva": 257136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisInvRange"
                },
                "instr_offset": 213,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisRzNegativeMask"
                },
                "instr_offset": 501,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisRzPositiveMask"
                },
                "instr_offset": 521,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisScale"
                },
                "instr_offset": 219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisXNegativeMask"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisXPositiveMask"
                },
                "instr_offset": 114,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisYNegativeMask"
                },
                "instr_offset": 134,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisYPositiveMask"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button0Mask"
                },
                "instr_offset": 553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button10Mask"
                },
                "instr_offset": 877,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button11Mask"
                },
                "instr_offset": 909,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button12Mask"
                },
                "instr_offset": 941,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button1Mask"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button2Mask"
                },
                "instr_offset": 618,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button3Mask"
                },
                "instr_offset": 650,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button4Mask"
                },
                "instr_offset": 683,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button5Mask"
                },
                "instr_offset": 715,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button6Mask"
                },
                "instr_offset": 747,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button7Mask"
                },
                "instr_offset": 780,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button8Mask"
                },
                "instr_offset": 812,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button9Mask"
                },
                "instr_offset": 844,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_JoystickState"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisRz"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisX"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisY"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 703,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 735,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 865,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 960,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadDevices"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4451408,
            "rva": 257104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisInvRange"
                },
                "instr_offset": 213,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisRzNegativeMask"
                },
                "instr_offset": 501,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisRzPositiveMask"
                },
                "instr_offset": 521,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisScale"
                },
                "instr_offset": 219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisXNegativeMask"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisXPositiveMask"
                },
                "instr_offset": 114,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisYNegativeMask"
                },
                "instr_offset": 134,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_AxisYPositiveMask"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button0Mask"
                },
                "instr_offset": 553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button10Mask"
                },
                "instr_offset": 877,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button11Mask"
                },
                "instr_offset": 909,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button12Mask"
                },
                "instr_offset": 941,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button1Mask"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button2Mask"
                },
                "instr_offset": 618,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button3Mask"
                },
                "instr_offset": 650,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button4Mask"
                },
                "instr_offset": 683,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button5Mask"
                },
                "instr_offset": 715,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button6Mask"
                },
                "instr_offset": 747,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button7Mask"
                },
                "instr_offset": 780,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button8Mask"
                },
                "instr_offset": 812,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_Button9Mask"
                },
                "instr_offset": 844,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ReadGamepad_JoystickState"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisRz"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisX"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetJoystickAxisY"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 703,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 735,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 865,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsJoystickButtonPressed"
                },
                "instr_offset": 929,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_PollJoystickState"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 960,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadDevices"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "state",
              "type": "Input_State*",
              "docs": "Input state structure updated from gamepad state."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_AxisScale"
            },
            "instr_offset": 219,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_AxisInvRange"
            },
            "instr_offset": 213,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_JoystickState"
            },
            "instr_offset": 32,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_AxisYNegativeMask"
            },
            "instr_offset": 134,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_AxisYPositiveMask"
            },
            "instr_offset": 154,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_AxisXNegativeMask"
            },
            "instr_offset": 95,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_AxisXPositiveMask"
            },
            "instr_offset": 114,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_AxisRzNegativeMask"
            },
            "instr_offset": 501,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_AxisRzPositiveMask"
            },
            "instr_offset": 521,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button0Mask"
            },
            "instr_offset": 553,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button1Mask"
            },
            "instr_offset": 586,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button2Mask"
            },
            "instr_offset": 618,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button3Mask"
            },
            "instr_offset": 650,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button4Mask"
            },
            "instr_offset": 683,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button5Mask"
            },
            "instr_offset": 715,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button6Mask"
            },
            "instr_offset": 747,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button7Mask"
            },
            "instr_offset": 780,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button8Mask"
            },
            "instr_offset": 812,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button9Mask"
            },
            "instr_offset": 844,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button10Mask"
            },
            "instr_offset": 877,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button11Mask"
            },
            "instr_offset": 909,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_ReadGamepad_Button12Mask"
            },
            "instr_offset": 941,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A0 ?? ?? ?? ?? 83 EC 08 84 C0 0F 84 ??",
          "match_offset": 0
        },
        "docs": "Samples DirectInput gamepad state into the per-frame input record with lX/lY +/-700 and lRz +/-600 thresholds. Live analog hooks sample Input_GetJoystickAxis* in the same frame to keep input frame-local, and native callers ignore the return register.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 520,
          "symbol_index": 520,
          "accessor": "DTTR_PCDOGS_F_Input_ReadGamepad",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_READ_GAMEPAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_READ_GAMEPAD"
        }
      }
    },
    "Input_ReadGamepad_AxisInvRange": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509816,
            "rva": 315512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 213,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518044,
            "rva": 323740,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 213,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518044,
            "rva": 323740,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 213,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 213,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "float",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 213,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Float constant 1/600 used with gamepad_axis_scale; the deadzone check uses literal +/-100 in Input_ReadGamepad.",
        "sdk": {
          "id": 95,
          "symbol_index": 95,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_AxisInvRange",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_AXIS_INV_RANGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_AXIS_INV_RANGE"
        }
      }
    },
    "Input_ReadGamepad_AxisRzNegativeMask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506896,
            "rva": 2312592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 501,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518160,
            "rva": 2323856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 501,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517584,
            "rva": 2323280,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 501,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 501,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 501,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3ec; ORed when DIJOYSTATE.lRz < -600.",
        "sdk": {
          "id": 787,
          "symbol_index": 787,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_AxisRzNegativeMask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_AXIS_RZ_NEGATIVE_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_AXIS_RZ_NEGATIVE_MASK"
        }
      }
    },
    "Input_ReadGamepad_AxisRzPositiveMask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506900,
            "rva": 2312596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 521,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518164,
            "rva": 2323860,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 521,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517588,
            "rva": 2323284,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 521,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 521,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 521,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3ed; ORed when DIJOYSTATE.lRz > 600.",
        "sdk": {
          "id": 788,
          "symbol_index": 788,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_AxisRzPositiveMask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_AXIS_RZ_POSITIVE_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_AXIS_RZ_POSITIVE_MASK"
        }
      }
    },
    "Input_ReadGamepad_AxisScale": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509812,
            "rva": 315508,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518040,
            "rva": 323736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518040,
            "rva": 323736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 219,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 219,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "float",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 219,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Float constant -4096.0 used to convert post-deadzone DirectInput axis values into signed Q12 input axes.",
        "sdk": {
          "id": 94,
          "symbol_index": 94,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_AxisScale",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_AXIS_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_AXIS_SCALE"
        }
      }
    },
    "Input_ReadGamepad_AxisXNegativeMask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506888,
            "rva": 2312584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518152,
            "rva": 2323848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517576,
            "rva": 2323272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 95,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 95,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3ea; ORed when DIJOYSTATE.lX < -700.",
        "sdk": {
          "id": 785,
          "symbol_index": 785,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_AxisXNegativeMask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_AXIS_X_NEGATIVE_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_AXIS_X_NEGATIVE_MASK"
        }
      }
    },
    "Input_ReadGamepad_AxisXPositiveMask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506892,
            "rva": 2312588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 114,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518156,
            "rva": 2323852,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 114,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517580,
            "rva": 2323276,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 114,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 114,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 114,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3eb; ORed when DIJOYSTATE.lX > 700.",
        "sdk": {
          "id": 786,
          "symbol_index": 786,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_AxisXPositiveMask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_AXIS_X_POSITIVE_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_AXIS_X_POSITIVE_MASK"
        }
      }
    },
    "Input_ReadGamepad_AxisYNegativeMask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506880,
            "rva": 2312576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 134,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518144,
            "rva": 2323840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 134,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517568,
            "rva": 2323264,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 134,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 134,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 134,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3e8; ORed when DIJOYSTATE.lY < -700.",
        "sdk": {
          "id": 783,
          "symbol_index": 783,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_AxisYNegativeMask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_AXIS_Y_NEGATIVE_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_AXIS_Y_NEGATIVE_MASK"
        }
      }
    },
    "Input_ReadGamepad_AxisYPositiveMask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506884,
            "rva": 2312580,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518148,
            "rva": 2323844,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517572,
            "rva": 2323268,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 154,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 154,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3e9; ORed when DIJOYSTATE.lY > 700.",
        "sdk": {
          "id": 784,
          "symbol_index": 784,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_AxisYPositiveMask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_AXIS_Y_POSITIVE_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_AXIS_Y_POSITIVE_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button0Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506904,
            "rva": 2312600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518168,
            "rva": 2323864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517592,
            "rva": 2323288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 553,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 553,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 553,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3ee; ORed when DIJOYSTATE.rgbButtons[0] is pressed.",
        "sdk": {
          "id": 789,
          "symbol_index": 789,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button0Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON0_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON0_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button10Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506944,
            "rva": 2312640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 877,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518208,
            "rva": 2323904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 877,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517632,
            "rva": 2323328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 877,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 877,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 877,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3f8; ORed when DIJOYSTATE.rgbButtons[10] is pressed.",
        "sdk": {
          "id": 799,
          "symbol_index": 799,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button10Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON10_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON10_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button11Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506948,
            "rva": 2312644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 909,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518212,
            "rva": 2323908,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 909,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517636,
            "rva": 2323332,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 909,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 909,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 909,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3f9; ORed when DIJOYSTATE.rgbButtons[11] is pressed.",
        "sdk": {
          "id": 800,
          "symbol_index": 800,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button11Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON11_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON11_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button12Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506952,
            "rva": 2312648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 941,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518216,
            "rva": 2323912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 941,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517640,
            "rva": 2323336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 941,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 941,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 941,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3fa; ORed when DIJOYSTATE.rgbButtons[12] is pressed.",
        "sdk": {
          "id": 801,
          "symbol_index": 801,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button12Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON12_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON12_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button1Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506908,
            "rva": 2312604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518172,
            "rva": 2323868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517596,
            "rva": 2323292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 586,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 586,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3ef; ORed when DIJOYSTATE.rgbButtons[1] is pressed.",
        "sdk": {
          "id": 790,
          "symbol_index": 790,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button1Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON1_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON1_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button2Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506912,
            "rva": 2312608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 618,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518176,
            "rva": 2323872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 618,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517600,
            "rva": 2323296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 618,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 618,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 618,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3f0; ORed when DIJOYSTATE.rgbButtons[2] is pressed.",
        "sdk": {
          "id": 791,
          "symbol_index": 791,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button2Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON2_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON2_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button3Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506916,
            "rva": 2312612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 650,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518180,
            "rva": 2323876,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 650,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517604,
            "rva": 2323300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 650,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 650,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 650,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3f1; ORed when DIJOYSTATE.rgbButtons[3] is pressed.",
        "sdk": {
          "id": 792,
          "symbol_index": 792,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button3Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON3_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON3_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button4Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506920,
            "rva": 2312616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 683,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518184,
            "rva": 2323880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 683,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517608,
            "rva": 2323304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 683,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 683,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 683,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3f2; ORed when DIJOYSTATE.rgbButtons[4] is pressed.",
        "sdk": {
          "id": 793,
          "symbol_index": 793,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button4Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON4_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON4_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button5Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506924,
            "rva": 2312620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 715,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518188,
            "rva": 2323884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 715,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517612,
            "rva": 2323308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 715,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 715,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 715,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3f3; ORed when DIJOYSTATE.rgbButtons[5] is pressed.",
        "sdk": {
          "id": 794,
          "symbol_index": 794,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button5Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON5_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON5_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button6Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506928,
            "rva": 2312624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 747,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518192,
            "rva": 2323888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 747,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517616,
            "rva": 2323312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 747,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 747,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 747,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3f4; ORed when DIJOYSTATE.rgbButtons[6] is pressed.",
        "sdk": {
          "id": 795,
          "symbol_index": 795,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button6Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON6_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON6_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button7Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506932,
            "rva": 2312628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 780,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518196,
            "rva": 2323892,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 780,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517620,
            "rva": 2323316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 780,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 780,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 780,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3f5; ORed when DIJOYSTATE.rgbButtons[7] is pressed.",
        "sdk": {
          "id": 796,
          "symbol_index": 796,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button7Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON7_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON7_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button8Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506936,
            "rva": 2312632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 812,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518200,
            "rva": 2323896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 812,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517624,
            "rva": 2323320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 812,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 812,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 812,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3f6; ORed when DIJOYSTATE.rgbButtons[8] is pressed.",
        "sdk": {
          "id": 797,
          "symbol_index": 797,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button8Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON8_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON8_MASK"
        }
      }
    },
    "Input_ReadGamepad_Button9Mask": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506940,
            "rva": 2312636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 844,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518204,
            "rva": 2323900,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 844,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517628,
            "rva": 2323324,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 844,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 844,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 844,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Direct gamepad lookup entry for control code 0x3f7; ORed when DIJOYSTATE.rgbButtons[9] is pressed.",
        "sdk": {
          "id": 798,
          "symbol_index": 798,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_Button9Mask",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_BUTTON9_MASK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_BUTTON9_MASK"
        }
      }
    },
    "Input_ReadGamepad_JoystickState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802576,
            "rva": 608272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810912,
            "rva": 616608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810896,
            "rva": 616592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_ReadGamepad"
            },
            "instr_offset": 32,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "struct DIJOYSTATE*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_ReadGamepad",
          "instr_offset": 32,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Current DirectInput joystick state buffer read by Input_ReadGamepad and released during input shutdown. This is a frame-local sample source; Input_GetJoystickAxis* near Input_ReadGamepad gives live analog freshness.",
        "sdk": {
          "id": 475,
          "symbol_index": 475,
          "accessor": "DTTR_PCDOGS_D_Input_ReadGamepad_JoystickState",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_READ_GAMEPAD_JOYSTICK_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_READ_GAMEPAD_JOYSTICK_STATE"
        }
      }
    },
    "Input_ReadKeyboard": {
      "function": {
        "analysis": {
          "en": {
            "address": 4446080,
            "rva": 251776,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadDevices"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4451344,
            "rva": 257040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadDevices"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4451312,
            "rva": 257008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadDevices"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "state",
              "type": "Input_State*",
              "docs": "Input state structure updated from keyboard state."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 53 8B 1D",
          "match_offset": 0
        },
        "docs": "Samples keyboard mappings into the per-frame input state record, ORs configured masks into button_bits, triggers the screenshot path for F10/VK121, and ignores the return metadata.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 519,
          "symbol_index": 519,
          "accessor": "DTTR_PCDOGS_F_Input_ReadKeyboard",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_READ_KEYBOARD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_READ_KEYBOARD"
        }
      }
    },
    "Input_RegisterButtonMapping": {
      "function": {
        "analysis": {
          "en": {
            "address": 4444144,
            "rva": 249840,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_RegisterButtonMapping_Count"
                },
                "instr_offset": 26,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_RegisterButtonMapping_KeyboardMappingButtons"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_RegisterButtonMapping_KeyboardMappingKeys"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 155,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 253,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 322,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4449392,
            "rva": 255088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_RegisterButtonMapping_Count"
                },
                "instr_offset": 26,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_RegisterButtonMapping_KeyboardMappingButtons"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_RegisterButtonMapping_KeyboardMappingKeys"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 253,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 322,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4449360,
            "rva": 255056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_RegisterButtonMapping_Count"
                },
                "instr_offset": 26,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_RegisterButtonMapping_KeyboardMappingButtons"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_RegisterButtonMapping_KeyboardMappingKeys"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 253,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 322,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "control_code",
              "type": "int32_t",
              "docs": "Virtual-key code or gamepad control code; gamepad codes start at 0x3e8."
            },
            {
              "name": "button_mask",
              "type": "uint32_t",
              "docs": "Input_State.button_bits mask produced by this control."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_RegisterButtonMapping_KeyboardMappingKeys"
            },
            "instr_offset": 32,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_RegisterButtonMapping_KeyboardMappingButtons"
            },
            "instr_offset": 62,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_RegisterButtonMapping_Count"
            },
            "instr_offset": 26,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 81 FE E8 ??",
          "match_offset": 0
        },
        "docs": "Registers a keyboard/gamepad control-to-button-mask binding. Codes below 0x3e8 append to the keyboard mapping arrays and refresh the button-name cache; codes 0x3e8 and above write the direct gamepad control lookup table.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 512,
          "symbol_index": 512,
          "accessor": "DTTR_PCDOGS_F_Input_RegisterButtonMapping",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_REGISTER_BUTTON_MAPPING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_REGISTER_BUTTON_MAPPING"
        }
      }
    },
    "Input_RegisterButtonMapping_Count": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506876,
            "rva": 2312572,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 26,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518140,
            "rva": 2323836,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 26,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517564,
            "rva": 2323260,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 26,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_RegisterButtonMapping"
            },
            "instr_offset": 26,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_RegisterButtonMapping",
          "instr_offset": 26,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Number of entries in the keyboard_mapping_keys/keyboard_mapping_buttons arrays.",
        "sdk": {
          "id": 782,
          "symbol_index": 782,
          "accessor": "DTTR_PCDOGS_D_Input_RegisterButtonMapping_Count",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_REGISTER_BUTTON_MAPPING_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_REGISTER_BUTTON_MAPPING_COUNT"
        }
      }
    },
    "Input_RegisterButtonMapping_KeyboardMappingButtons": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835900,
            "rva": 641596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844796,
            "rva": 650492,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844780,
            "rva": 650476,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_RegisterButtonMapping"
            },
            "instr_offset": 62,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_RegisterButtonMapping",
          "instr_offset": 62,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Heap array parallel to keyboard_mapping_keys; each entry is the Input_State.button_bits mask for that key.",
        "sdk": {
          "id": 680,
          "symbol_index": 680,
          "accessor": "DTTR_PCDOGS_D_Input_RegisterButtonMapping_KeyboardMappingButtons",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_REGISTER_BUTTON_MAPPING_KEYBOARD_MAPPING_BUTTONS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_REGISTER_BUTTON_MAPPING_KEYBOARD_MAPPING_BUTTONS"
        }
      }
    },
    "Input_RegisterButtonMapping_KeyboardMappingKeys": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835896,
            "rva": 641592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844792,
            "rva": 650488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844776,
            "rva": 650472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_RegisterButtonMapping"
            },
            "instr_offset": 32,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Input_RegisterButtonMapping",
          "instr_offset": 32,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Heap array of registered keyboard virtual-key codes, grown by Input_RegisterButtonMapping.",
        "sdk": {
          "id": 679,
          "symbol_index": 679,
          "accessor": "DTTR_PCDOGS_D_Input_RegisterButtonMapping_KeyboardMappingKeys",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_REGISTER_BUTTON_MAPPING_KEYBOARD_MAPPING_KEYS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_REGISTER_BUTTON_MAPPING_KEYBOARD_MAPPING_KEYS"
        }
      }
    },
    "Input_ResetInputAndState": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4449008,
            "rva": 254704,
            "image_base": 4194304
          },
          "eu": {
            "address": 4454272,
            "rva": 259968,
            "image_base": 4194304
          },
          "sc": {
            "address": 4454240,
            "rva": 259936,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 25 DF F4 FF FF"
      }
    },
    "Input_ResetState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4449008,
            "rva": 254704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ClearState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4454272,
            "rva": 259968,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ClearState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4454240,
            "rva": 259936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ClearState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 25",
          "match_offset": 0
        },
        "docs": "Clears the current game input state before normal frame/input processing resumes.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 17,
          "symbol_index": 17,
          "accessor": "DTTR_PCDOGS_F_Input_ResetState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_RESET_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_RESET_STATE"
        }
      }
    },
    "Input_SetDeviceDataFormat": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301088,
            "rva": 106784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_SetJoystick2DataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_SetJoystickDataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4301568,
            "rva": 107264,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_SetJoystick2DataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_SetJoystickDataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4301568,
            "rva": 107264,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_SetJoystick2DataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_SetJoystickDataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            },
            {
              "name": "data_format",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8B 54 24 08 52 50 8B 08 FF 51 ?? F7 D8 1B C0 40 C3",
          "match_offset": 0
        },
        "docs": "Calls IDirectInputDevice::SetDataFormat and returns 1 on success, 0 on failure.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 241,
          "symbol_index": 241,
          "accessor": "DTTR_PCDOGS_F_Input_SetDeviceDataFormat",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_SET_DEVICE_DATA_FORMAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_SET_DEVICE_DATA_FORMAT"
        }
      }
    },
    "Input_SetExclusiveForegroundCooperativeLevel": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301616,
            "rva": 107312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302096,
            "rva": 107792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302096,
            "rva": 107792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            },
            {
              "name": "hwnd",
              "type": "HWND"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 8B 4C 24 04 6A 05 50 51 E8 ??",
          "match_offset": 0
        },
        "docs": "Calls IDirectInputDevice::SetCooperativeLevel(hwnd, DISCL_EXCLUSIVE | DISCL_FOREGROUND).",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 251,
          "symbol_index": 251,
          "accessor": "DTTR_PCDOGS_F_Input_SetExclusiveForegroundCooperativeLevel",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_SET_EXCLUSIVE_FOREGROUND_COOPERATIVE_LEVEL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_SET_EXCLUSIVE_FOREGROUND_COOPERATIVE_LEVEL"
        }
      }
    },
    "Input_SetForceFeedbackScale": {
      "function": {
        "analysis": {
          "en": {
            "address": 4302576,
            "rva": 108272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4303056,
            "rva": 108752,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4303056,
            "rva": 108752,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "scale_factor",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 A3 ?? ?? ?? ?? C3 90 90 90 90 90 90 8B 44",
          "match_offset": 0
        },
        "docs": "Stores the global force-feedback scale factor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 263,
          "symbol_index": 263,
          "accessor": "DTTR_PCDOGS_F_Input_SetForceFeedbackScale",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_SET_FORCE_FEEDBACK_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_SET_FORCE_FEEDBACK_SCALE"
        }
      }
    },
    "Input_SetJoystick2DataFormat": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301680,
            "rva": 107376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetDeviceDataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302160,
            "rva": 107856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetDeviceDataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302160,
            "rva": 107856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetDeviceDataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 06 FF 50 64 6A 50 56 E8 ?? ?? ?? ?? 83 C4 08 85 C0",
          "match_offset": -37
        },
        "docs": "Sets the DirectInput device data format to the extended joystick state DIDATAFORMAT.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 253,
          "symbol_index": 253,
          "accessor": "DTTR_PCDOGS_F_Input_SetJoystick2DataFormat",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_SET_JOYSTICK2_DATA_FORMAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_SET_JOYSTICK2_DATA_FORMAT"
        }
      }
    },
    "Input_SetJoystickDataFormat": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301648,
            "rva": 107344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetDeviceDataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4302128,
            "rva": 107824,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetDeviceDataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4302128,
            "rva": 107824,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetDeviceDataFormat"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_CreateConfiguredJoystickDevice"
                },
                "instr_offset": 183,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 68 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4 08 C3 90 90 90 90 90 90 90 90 90 90 90 90 90 8B",
          "match_offset": 0
        },
        "docs": "Sets the DirectInput device data format to the joystick state DIDATAFORMAT.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 252,
          "symbol_index": 252,
          "accessor": "DTTR_PCDOGS_F_Input_SetJoystickDataFormat",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_SET_JOYSTICK_DATA_FORMAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_SET_JOYSTICK_DATA_FORMAT"
        }
      }
    },
    "Input_SetJoystickRzAxisRange": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301440,
            "rva": 107136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4301920,
            "rva": 107616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4301920,
            "rva": 107616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            },
            {
              "name": "min_value",
              "type": "int32_t"
            },
            {
              "name": "max_value",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "04 50 51 6A 14 52 E8 ??",
          "match_offset": -11
        },
        "docs": "Sets DIPROP_RANGE for the joystick Rz axis and returns 1 on success.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 248,
          "symbol_index": 248,
          "accessor": "DTTR_PCDOGS_F_Input_SetJoystickRzAxisRange",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_SET_JOYSTICK_RZ_AXIS_RANGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_SET_JOYSTICK_RZ_AXIS_RANGE"
        }
      }
    },
    "Input_SetJoystickXAxisRange": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301344,
            "rva": 107040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4301824,
            "rva": 107520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4301824,
            "rva": 107520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 143,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            },
            {
              "name": "min_value",
              "type": "int32_t"
            },
            {
              "name": "max_value",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "04 50 51 6A 00 52 E8 ??",
          "match_offset": -11
        },
        "docs": "Sets DIPROP_RANGE for joystick X axis and returns 1 on success.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 245,
          "symbol_index": 245,
          "accessor": "DTTR_PCDOGS_F_Input_SetJoystickXAxisRange",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_SET_JOYSTICK_X_AXIS_RANGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_SET_JOYSTICK_X_AXIS_RANGE"
        }
      }
    },
    "Input_SetJoystickYAxisRange": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301376,
            "rva": 107072,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4301856,
            "rva": 107552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4301856,
            "rva": 107552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            },
            {
              "name": "min_value",
              "type": "int32_t"
            },
            {
              "name": "max_value",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "04 50 51 6A 04 52 E8 ??",
          "match_offset": -11
        },
        "docs": "Sets DIPROP_RANGE for joystick Y axis and returns 1 on success.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 246,
          "symbol_index": 246,
          "accessor": "DTTR_PCDOGS_F_Input_SetJoystickYAxisRange",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_SET_JOYSTICK_Y_AXIS_RANGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_SET_JOYSTICK_Y_AXIS_RANGE"
        }
      }
    },
    "Input_SetJoystickZAxisRange": {
      "function": {
        "analysis": {
          "en": {
            "address": 4301408,
            "rva": 107104,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4301888,
            "rva": 107584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4301888,
            "rva": 107584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_InitializeJoystickInput"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "device",
              "type": "DInput_IDirectInputDevice*"
            },
            {
              "name": "min_value",
              "type": "int32_t"
            },
            {
              "name": "max_value",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "04 50 51 6A 08 52 E8 ??",
          "match_offset": -11
        },
        "docs": "Sets DIPROP_RANGE for joystick Z axis and returns 1 on success.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 247,
          "symbol_index": 247,
          "accessor": "DTTR_PCDOGS_F_Input_SetJoystickZAxisRange",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_SET_JOYSTICK_Z_AXIS_RANGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_SET_JOYSTICK_Z_AXIS_RANGE"
        }
      }
    },
    "Input_SetKeyUp": {
      "function": {
        "analysis": {
          "en": {
            "address": 4477040,
            "rva": 282736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484880,
            "rva": 290576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484656,
            "rva": 290352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t",
          "params": [
            {
              "name": "scan_code",
              "type": "uint8_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 25 FF 00 00 00 C6 80 ?? ?? ?? ?? 00 C3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 8B 0D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 634,
          "symbol_index": 634,
          "accessor": "DTTR_PCDOGS_F_Input_SetKeyUp",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_SET_KEY_UP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_SET_KEY_UP"
        }
      }
    },
    "Input_State": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "button_bits",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec2I16",
            "name": "axis",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Math_Vec2I16",
            "name": "axis_aux",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Input_State"
        }
      }
    },
    "Input_TriggerRumbleIfAllowed": {
      "function": {
        "analysis": {
          "en": {
            "address": 4447344,
            "rva": 253040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_TriggerRumbleIfAllowed_ForceScale"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_TriggerRumbleIfAllowed_StrongScale"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_TriggerRumbleIfAllowed_WeakScale"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_SetConstantForceEffect"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 575,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1072,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1092,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4452608,
            "rva": 258304,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_TriggerRumbleIfAllowed_ForceScale"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_TriggerRumbleIfAllowed_StrongScale"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_TriggerRumbleIfAllowed_WeakScale"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_SetConstantForceEffect"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 578,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1072,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1092,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4452576,
            "rva": 258272,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_TriggerRumbleIfAllowed_ForceScale"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_TriggerRumbleIfAllowed_StrongScale"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Input_TriggerRumbleIfAllowed_WeakScale"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_SetConstantForceEffect"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 578,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1072,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 1092,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "effect_source_id",
              "type": "int32_t",
              "docs": "Caller-supplied effect source id preserved by the ABI."
            },
            {
              "name": "strong_feedback",
              "type": "int32_t",
              "docs": "Nonzero doubles the force-feedback magnitude scale from 5000 to 10000."
            },
            {
              "name": "force_magnitude_fixed",
              "type": "int32_t",
              "docs": "Fixed-point 12-bit force magnitude; 0x1000 represents 1.0 before scaling."
            },
            {
              "name": "duration_units",
              "type": "int32_t",
              "docs": "Duration in units of 100000 microseconds."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_TriggerRumbleIfAllowed_ForceScale"
            },
            "instr_offset": 19,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_TriggerRumbleIfAllowed_StrongScale"
            },
            "instr_offset": 35,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Input_TriggerRumbleIfAllowed_WeakScale"
            },
            "instr_offset": 27,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? 85 C0 75 ?? DB",
          "match_offset": 0
        },
        "docs": "Returns immediately when rumble is suppressed; otherwise computes DirectInput constant-force magnitude/duration and starts the effect.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 523,
          "symbol_index": 523,
          "accessor": "DTTR_PCDOGS_F_Input_TriggerRumbleIfAllowed",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_TRIGGER_RUMBLE_IF_ALLOWED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_TRIGGER_RUMBLE_IF_ALLOWED"
        }
      }
    },
    "Input_TriggerRumbleIfAllowed_ForceScale": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509800,
            "rva": 315496,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518028,
            "rva": 323724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518028,
            "rva": 323724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_TriggerRumbleIfAllowed"
            },
            "instr_offset": 19,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 91,
          "symbol_index": 91,
          "accessor": "DTTR_PCDOGS_D_Input_TriggerRumbleIfAllowed_ForceScale",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_TRIGGER_RUMBLE_IF_ALLOWED_FORCE_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_TRIGGER_RUMBLE_IF_ALLOWED_FORCE_SCALE"
        }
      }
    },
    "Input_TriggerRumbleIfAllowed_StrongScale": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509820,
            "rva": 315516,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518048,
            "rva": 323744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518048,
            "rva": 323744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_TriggerRumbleIfAllowed"
            },
            "instr_offset": 35,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 96,
          "symbol_index": 96,
          "accessor": "DTTR_PCDOGS_D_Input_TriggerRumbleIfAllowed_StrongScale",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_TRIGGER_RUMBLE_IF_ALLOWED_STRONG_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_TRIGGER_RUMBLE_IF_ALLOWED_STRONG_SCALE"
        }
      }
    },
    "Input_TriggerRumbleIfAllowed_WeakScale": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509824,
            "rva": 315520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518052,
            "rva": 323748,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518052,
            "rva": 323748,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Input_TriggerRumbleIfAllowed"
            },
            "instr_offset": 27,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 97,
          "symbol_index": 97,
          "accessor": "DTTR_PCDOGS_D_Input_TriggerRumbleIfAllowed_WeakScale",
          "sdk_id": "DTTR_PCDOGS_DATA_INPUT_TRIGGER_RUMBLE_IF_ALLOWED_WEAK_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_INPUT_TRIGGER_RUMBLE_IF_ALLOWED_WEAK_SCALE"
        }
      }
    },
    "Input_Update": {
      "function": {
        "analysis": {
          "en": {
            "address": 4469040,
            "rva": 274736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CurrentX"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadDevices"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4476256,
            "rva": 281952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CurrentX"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadDevices"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4476192,
            "rva": 281888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_CurrentX"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadDevices"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_CurrentX"
            },
            "instr_offset": 158,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 49 08 89 48 08 E8 ??",
          "match_offset": -36
        },
        "docs": "Per-frame input updater that copies current/previous player input state, reads keyboard/gamepad devices, applies toggles, and handles replay input.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 603,
          "symbol_index": 603,
          "accessor": "DTTR_PCDOGS_F_Input_Update",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_INPUT_UPDATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_INPUT_UPDATE"
        }
      }
    },
    "Level_BlobHeader": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "material_section_offset",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "scene_graph_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "mesh_collision_offset",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Package level-blob header whose relocation fields are rebased from the loaded blob base.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Level_BlobHeader"
        }
      }
    },
    "Level_BuildCompletionTable": {
      "function": {
        "analysis": {
          "en": {
            "address": 4355024,
            "rva": 160720,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_BuildCompletionTable_SlotDispatchTable"
                },
                "instr_offset": 376,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4357008,
            "rva": 162704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_BuildCompletionTable_SlotDispatchTable"
                },
                "instr_offset": 376,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4357008,
            "rva": 162704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_BuildCompletionTable_SlotDispatchTable"
                },
                "instr_offset": 376,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Level_BuildCompletionTable_SlotDispatchTable"
            },
            "instr_offset": 376,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "33 F6 83 F8 04 0F 8D ??",
          "match_offset": -44
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 321,
          "symbol_index": 321,
          "accessor": "DTTR_PCDOGS_F_Level_BuildCompletionTable",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_BUILD_COMPLETION_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_BUILD_COMPLETION_TABLE"
        }
      }
    },
    "Level_BuildCompletionTable_SlotDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4355540,
            "rva": 161236,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_BuildCompletionTable"
                },
                "instr_offset": 376,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4357524,
            "rva": 163220,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_BuildCompletionTable"
                },
                "instr_offset": 376,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4357524,
            "rva": 163220,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_BuildCompletionTable"
                },
                "instr_offset": 376,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_BuildCompletionTable"
            },
            "instr_offset": 376,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_BuildCompletionTable",
          "instr_offset": 376,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Four-entry uint32_t jump table used by Level_BuildCompletionTable to store four packed completion masks.",
        "sdk": {
          "id": 46,
          "symbol_index": 46,
          "accessor": "DTTR_PCDOGS_D_Level_BuildCompletionTable_SlotDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_BUILD_COMPLETION_TABLE_SLOT_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_BUILD_COMPLETION_TABLE_SLOT_DISPATCH_TABLE"
        }
      }
    },
    "Level_CalculateCompletionPercent": {
      "function": {
        "analysis": {
          "en": {
            "address": 4361344,
            "rva": 167040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 816,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4363552,
            "rva": 169248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 337,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 1005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 1030,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 2086,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 2221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 2348,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4363552,
            "rva": 169248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 337,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 1005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 1030,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 380,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 469,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 771,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 853,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1046,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1345,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1464,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1638,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1752,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2025,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2371,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 2086,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 2221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 2348,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "save",
              "type": "Save_GameSlot*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 00 D3 E5 85 E8 ??",
          "match_offset": -54
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 348,
          "symbol_index": 348,
          "accessor": "DTTR_PCDOGS_F_Level_CalculateCompletionPercent",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_CALCULATE_COMPLETION_PERCENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_CALCULATE_COMPLETION_PERCENT"
        }
      }
    },
    "Level_CheckBonusUnlock": {
      "function": {
        "analysis": {
          "en": {
            "address": 4361104,
            "rva": 166800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_CheckBonusUnlock_MenuResetFlag"
                },
                "instr_offset": 38,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1731,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4363312,
            "rva": 169008,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_CheckBonusUnlock_MenuResetFlag"
                },
                "instr_offset": 38,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1734,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4363312,
            "rva": 169008,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_CheckBonusUnlock_MenuResetFlag"
                },
                "instr_offset": 38,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1734,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "player_position",
              "type": "Math_Vec3I32*",
              "docs": "Player actor position vector used for the bonus-unlock trace."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Level_CheckBonusUnlock_MenuResetFlag"
            },
            "instr_offset": 38,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 C6 44 24 31 00 E8 ??",
          "match_offset": -101
        },
        "docs": "When the active checker slot changes, trace from playerPosition and latch the bonus-unlock/menu-reset globals on hit.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 345,
          "symbol_index": 345,
          "accessor": "DTTR_PCDOGS_F_Level_CheckBonusUnlock",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_CHECK_BONUS_UNLOCK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_CHECK_BONUS_UNLOCK"
        }
      }
    },
    "Level_CheckBonusUnlock_MenuResetFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831734,
            "rva": 637430,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CheckBonusUnlock"
                },
                "instr_offset": 38,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840630,
            "rva": 646326,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CheckBonusUnlock"
                },
                "instr_offset": 38,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840614,
            "rva": 646310,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CheckBonusUnlock"
                },
                "instr_offset": 38,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_CheckBonusUnlock"
            },
            "instr_offset": 38,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 551,
          "symbol_index": 551,
          "accessor": "DTTR_PCDOGS_D_Level_CheckBonusUnlock_MenuResetFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_CHECK_BONUS_UNLOCK_MENU_RESET_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_CHECK_BONUS_UNLOCK_MENU_RESET_FLAG"
        }
      }
    },
    "Level_CleanupActors": {
      "function": {
        "analysis": {
          "en": {
            "address": 4242848,
            "rva": 48544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4243328,
            "rva": 49024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4243328,
            "rva": 49024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 57 85 C0 0F",
          "match_offset": 0
        },
        "docs": "Destroys/cleans level actor state and returns transition status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 97,
          "symbol_index": 97,
          "accessor": "DTTR_PCDOGS_F_Level_CleanupActors",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_CLEANUP_ACTORS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_CLEANUP_ACTORS"
        }
      }
    },
    "Level_DataHeader": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "resource_manager_offset",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "object_tree_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "level_data_offset",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Level data header containing relocation fields fixed up against the loaded level-data relocation base.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Level_DataHeader"
        }
      }
    },
    "Level_GetArrayIndex": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353680,
            "rva": 159376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355632,
            "rva": 161328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355632,
            "rva": 161328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "level_id",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 F9 1A 74 ?? 83 E9 ??",
          "match_offset": -29
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 314,
          "symbol_index": 314,
          "accessor": "DTTR_PCDOGS_F_Level_GetArrayIndex",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_GET_ARRAY_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_GET_ARRAY_INDEX"
        }
      }
    },
    "Level_GetDataPointer": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353456,
            "rva": 159152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_GetDataPointer_BonusFlags"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 1926,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355408,
            "rva": 161104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_GetDataPointer_BonusFlags"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 2693,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355408,
            "rva": 161104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_GetDataPointer_BonusFlags"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 2679,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "data_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Level_GetDataPointer_BonusFlags"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 BA ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 311,
          "symbol_index": 311,
          "accessor": "DTTR_PCDOGS_F_Level_GetDataPointer",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_GET_DATA_POINTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_GET_DATA_POINTER"
        }
      }
    },
    "Level_GetDataPointer_BonusFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 4830716,
            "rva": 636412,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_GetDataPointer"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839100,
            "rva": 644796,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_GetDataPointer"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839084,
            "rva": 644780,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_GetDataPointer"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_GetDataPointer"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_GetDataPointer",
          "instr_offset": 4,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "unknown",
        "docs": "Holds decoded bonus-data pointers (not flag bits).",
        "sdk": {
          "id": 514,
          "symbol_index": 514,
          "accessor": "DTTR_PCDOGS_D_Level_GetDataPointer_BonusFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_GET_DATA_POINTER_BONUS_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_GET_DATA_POINTER_BONUS_FLAGS"
        }
      }
    },
    "Level_Header": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "magic",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "version",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_table_off",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "object_tree_off",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "collision_off",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "data_size",
            "offset": 20,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Level-file header for material, object-tree, and collision data. The payload after the header is still undocumented.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Level_Header"
        }
      }
    },
    "Level_InitializeActorSystem": {
      "function": {
        "analysis": {
          "en": {
            "address": 4233040,
            "rva": 38736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_BehaviorProcessActorFunc"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_BehaviorProcessSnapFunc"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CameraData"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CameraInitDist"
                },
                "instr_offset": 342,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CollisionDispatchActorFunc"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CollisionProcessFunc"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_ComponentSpawnStateBuffer"
                },
                "instr_offset": 315,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_DegenerateTriArea"
                },
                "instr_offset": 350,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_MaxLevelScale"
                },
                "instr_offset": 300,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_ObjectNodeRoot"
                },
                "instr_offset": 423,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_PlayerMovementFunc"
                },
                "instr_offset": 37,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RHWDepthMul2"
                },
                "instr_offset": 417,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderDistance"
                },
                "instr_offset": 389,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderDistanceQuarter"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderDistanceThird"
                },
                "instr_offset": 449,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderingStateFlag"
                },
                "instr_offset": 258,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_State"
                },
                "instr_offset": 495,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_TransitionEndFrame"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_TransitionStartFrame"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_TransitionState"
                },
                "instr_offset": 228,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 514,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 522,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ResetState"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4233504,
            "rva": 39200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_BehaviorProcessActorFunc"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_BehaviorProcessSnapFunc"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CameraData"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CameraInitDist"
                },
                "instr_offset": 342,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CollisionDispatchActorFunc"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CollisionProcessFunc"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_ComponentSpawnStateBuffer"
                },
                "instr_offset": 315,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_DegenerateTriArea"
                },
                "instr_offset": 350,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_MaxLevelScale"
                },
                "instr_offset": 300,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_ObjectNodeRoot"
                },
                "instr_offset": 423,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_PlayerMovementFunc"
                },
                "instr_offset": 37,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RHWDepthMul2"
                },
                "instr_offset": 417,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderDistance"
                },
                "instr_offset": 389,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderDistanceQuarter"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderDistanceThird"
                },
                "instr_offset": 449,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderingStateFlag"
                },
                "instr_offset": 258,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_State"
                },
                "instr_offset": 495,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_TransitionEndFrame"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_TransitionStartFrame"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_TransitionState"
                },
                "instr_offset": 228,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 514,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 522,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ResetState"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4233504,
            "rva": 39200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_BehaviorProcessActorFunc"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_BehaviorProcessSnapFunc"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CameraData"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CameraInitDist"
                },
                "instr_offset": 342,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CollisionDispatchActorFunc"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_CollisionProcessFunc"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_ComponentSpawnStateBuffer"
                },
                "instr_offset": 315,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_DegenerateTriArea"
                },
                "instr_offset": 350,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_MaxLevelScale"
                },
                "instr_offset": 300,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_ObjectNodeRoot"
                },
                "instr_offset": 423,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_PlayerMovementFunc"
                },
                "instr_offset": 37,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RHWDepthMul2"
                },
                "instr_offset": 417,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderDistance"
                },
                "instr_offset": 389,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderDistanceQuarter"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderDistanceThird"
                },
                "instr_offset": 449,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_RenderingStateFlag"
                },
                "instr_offset": 258,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_State"
                },
                "instr_offset": 495,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_TransitionEndFrame"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_TransitionStartFrame"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeActorSystem_TransitionState"
                },
                "instr_offset": 228,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_SetupProjection"
                },
                "instr_offset": 514,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_InitializeFunctionPointers"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 522,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ResetState"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_RHWDepthMul2"
            },
            "instr_offset": 417,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_DegenerateTriArea"
            },
            "instr_offset": 350,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_CameraInitDist"
            },
            "instr_offset": 342,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_ComponentSpawnStateBuffer"
            },
            "instr_offset": 315,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_MaxLevelScale"
            },
            "instr_offset": 300,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_TransitionStartFrame"
            },
            "instr_offset": 195,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_TransitionEndFrame"
            },
            "instr_offset": 217,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_CollisionDispatchActorFunc"
            },
            "instr_offset": 17,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_CameraData"
            },
            "instr_offset": 509,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_BehaviorProcessActorFunc"
            },
            "instr_offset": 47,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_BehaviorProcessSnapFunc"
            },
            "instr_offset": 57,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_PlayerMovementFunc"
            },
            "instr_offset": 37,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_CollisionProcessFunc"
            },
            "instr_offset": 27,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_RenderingStateFlag"
            },
            "instr_offset": 258,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_State"
            },
            "instr_offset": 495,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_ObjectNodeRoot"
            },
            "instr_offset": 423,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_RenderDistance"
            },
            "instr_offset": 389,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_TransitionState"
            },
            "instr_offset": 228,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_RenderDistanceQuarter"
            },
            "instr_offset": 431,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeActorSystem_RenderDistanceThird"
            },
            "instr_offset": 449,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 53 33 DB 57 89 1D ??",
          "match_offset": 0
        },
        "docs": "Initializes actor/entity runtime lists, dispatch/collision/movement callback globals, and active entity/navigation work-list buffers for the loaded level.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 88,
          "symbol_index": 88,
          "accessor": "DTTR_PCDOGS_F_Level_InitializeActorSystem",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_INITIALIZE_ACTOR_SYSTEM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM"
        }
      }
    },
    "Level_InitializeActorSystem_BehaviorProcessActorFunc": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505636,
            "rva": 2311332,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515876,
            "rva": 2321572,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515300,
            "rva": 2320996,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 47,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 47,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_BehaviorCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_InitializeActorSystem",
          "instr_offset": 47,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Actor behavior dispatch callback initialized by Level_InitializeActorSystem.",
        "sdk": {
          "id": 754,
          "symbol_index": 754,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_BehaviorProcessActorFunc",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_BEHAVIOR_PROCESS_ACTOR_FUNC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_BEHAVIOR_PROCESS_ACTOR_FUNC"
        }
      }
    },
    "Level_InitializeActorSystem_BehaviorProcessSnapFunc": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505644,
            "rva": 2311340,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515884,
            "rva": 2321580,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515308,
            "rva": 2321004,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 57,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 57,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "engine_managed",
        "docs": "Snap/entity update callback slot initialized to Actor_ProcessSnapAndEntityUpdate.",
        "sdk": {
          "id": 756,
          "symbol_index": 756,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_BehaviorProcessSnapFunc",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_BEHAVIOR_PROCESS_SNAP_FUNC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_BEHAVIOR_PROCESS_SNAP_FUNC"
        }
      }
    },
    "Level_InitializeActorSystem_CameraData": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439744,
            "rva": 2245440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449984,
            "rva": 2255680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449408,
            "rva": 2255104,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 509,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 733,
          "symbol_index": 733,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_CameraData",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_CAMERA_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_CAMERA_DATA"
        }
      }
    },
    "Level_InitializeActorSystem_CameraInitDist": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509716,
            "rva": 315412,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 342,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517908,
            "rva": 323604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 342,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517908,
            "rva": 323604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 342,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 342,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 70,
          "symbol_index": 70,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_CameraInitDist",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_CAMERA_INIT_DIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_CAMERA_INIT_DIST"
        }
      }
    },
    "Level_InitializeActorSystem_CollisionDispatchActorFunc": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832708,
            "rva": 638404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841612,
            "rva": 647308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841596,
            "rva": 647292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 17,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 17,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Collision_ActorResponseCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_InitializeActorSystem",
          "instr_offset": 17,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Actor collision response callback slot initialized to Actor_ProcessCollisionResponse; part of the sparse collision-state callback vector.",
        "sdk": {
          "id": 640,
          "symbol_index": 640,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_CollisionDispatchActorFunc",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_COLLISION_DISPATCH_ACTOR_FUNC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_COLLISION_DISPATCH_ACTOR_FUNC"
        }
      }
    },
    "Level_InitializeActorSystem_CollisionProcessFunc": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507144,
            "rva": 2312840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518408,
            "rva": 2324104,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517832,
            "rva": 2323528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 27,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Collision_ProcessCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_InitializeActorSystem",
          "instr_offset": 27,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Engine-managed scalar actor collision processing callback slot initialized to Physics_ProcessActorCollision and aliased by collision_state_handler_table slot 2.",
        "sdk": {
          "id": 816,
          "symbol_index": 816,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_CollisionProcessFunc",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_COLLISION_PROCESS_FUNC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_COLLISION_PROCESS_FUNC"
        }
      }
    },
    "Level_InitializeActorSystem_ComponentSpawnStateBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4513840,
            "rva": 319536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 315,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4522032,
            "rva": 327728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 315,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4522032,
            "rva": 327728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 315,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 315,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 112,
          "symbol_index": 112,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_ComponentSpawnStateBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_COMPONENT_SPAWN_STATE_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_COMPONENT_SPAWN_STATE_BUFFER"
        }
      }
    },
    "Level_InitializeActorSystem_DegenerateTriArea": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509712,
            "rva": 315408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 350,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517904,
            "rva": 323600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 350,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517904,
            "rva": 323600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 350,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 350,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 69,
          "symbol_index": 69,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_DegenerateTriArea",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_DEGENERATE_TRI_AREA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_DEGENERATE_TRI_AREA"
        }
      }
    },
    "Level_InitializeActorSystem_MaxLevelScale": {
      "data": {
        "analysis": {
          "en": {
            "address": 4513880,
            "rva": 319576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 300,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4522072,
            "rva": 327768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 300,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4522072,
            "rva": 327768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 300,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 300,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 113,
          "symbol_index": 113,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_MaxLevelScale",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_MAX_LEVEL_SCALE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_MAX_LEVEL_SCALE"
        }
      }
    },
    "Level_InitializeActorSystem_ObjectNodeRoot": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830032,
            "rva": 23635728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 423,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841296,
            "rva": 23646992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 423,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840720,
            "rva": 23646416,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 423,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 423,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 924,
          "symbol_index": 924,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_ObjectNodeRoot",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_OBJECT_NODE_ROOT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_OBJECT_NODE_ROOT"
        }
      }
    },
    "Level_InitializeActorSystem_PlayerMovementFunc": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505684,
            "rva": 2311380,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 37,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515924,
            "rva": 2321620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 37,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515348,
            "rva": 2321044,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 37,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 37,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_BehaviorCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_InitializeActorSystem",
          "instr_offset": 37,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Player movement callback slot initialized by Level_InitializeActorSystem.",
        "sdk": {
          "id": 763,
          "symbol_index": 763,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_PlayerMovementFunc",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_PLAYER_MOVEMENT_FUNC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_PLAYER_MOVEMENT_FUNC"
        }
      }
    },
    "Level_InitializeActorSystem_RHWDepthMul2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509708,
            "rva": 315404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 417,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517900,
            "rva": 323596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 417,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517900,
            "rva": 323596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 417,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 417,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 68,
          "symbol_index": 68,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_RHWDepthMul2",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_RHW_DEPTH_MUL2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_RHW_DEPTH_MUL2"
        }
      }
    },
    "Level_InitializeActorSystem_RenderDistance": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831720,
            "rva": 23637416,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 389,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27842984,
            "rva": 23648680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 389,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27842408,
            "rva": 23648104,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 389,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 389,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 955,
          "symbol_index": 955,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_RenderDistance",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_RENDER_DISTANCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_RENDER_DISTANCE"
        }
      }
    },
    "Level_InitializeActorSystem_RenderDistanceQuarter": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831732,
            "rva": 23637428,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27842996,
            "rva": 23648692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27842420,
            "rva": 23648116,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 431,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 958,
          "symbol_index": 958,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_RenderDistanceQuarter",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_RENDER_DISTANCE_QUARTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_RENDER_DISTANCE_QUARTER"
        }
      }
    },
    "Level_InitializeActorSystem_RenderDistanceThird": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831736,
            "rva": 23637432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 449,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843000,
            "rva": 23648696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 449,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27842424,
            "rva": 23648120,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 449,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 449,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 959,
          "symbol_index": 959,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_RenderDistanceThird",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_RENDER_DISTANCE_THIRD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_RENDER_DISTANCE_THIRD"
        }
      }
    },
    "Level_InitializeActorSystem_RenderingStateFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507282,
            "rva": 2312978,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 258,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518546,
            "rva": 2324242,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 258,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517970,
            "rva": 2323666,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 258,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 258,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 824,
          "symbol_index": 824,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_RenderingStateFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_RENDERING_STATE_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_RENDERING_STATE_FLAG"
        }
      }
    },
    "Level_InitializeActorSystem_State": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830008,
            "rva": 23635704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 495,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841272,
            "rva": 23646968,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 495,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840696,
            "rva": 23646392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 495,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 495,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 918,
          "symbol_index": 918,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_State",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_STATE"
        }
      }
    },
    "Level_InitializeActorSystem_TransitionEndFrame": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551124,
            "rva": 356820,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559460,
            "rva": 365156,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559444,
            "rva": 365140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 217,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 345,
          "symbol_index": 345,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_TransitionEndFrame",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_TRANSITION_END_FRAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_TRANSITION_END_FRAME"
        }
      }
    },
    "Level_InitializeActorSystem_TransitionStartFrame": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551116,
            "rva": 356812,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559452,
            "rva": 365148,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559436,
            "rva": 365132,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 195,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 343,
          "symbol_index": 343,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_TransitionStartFrame",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_TRANSITION_START_FRAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_TRANSITION_START_FRAME"
        }
      }
    },
    "Level_InitializeActorSystem_TransitionState": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831724,
            "rva": 23637420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 228,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27842988,
            "rva": 23648684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 228,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27842412,
            "rva": 23648108,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 228,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeActorSystem"
            },
            "instr_offset": 228,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 956,
          "symbol_index": 956,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeActorSystem_TransitionState",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_ACTOR_SYSTEM_TRANSITION_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_ACTOR_SYSTEM_TRANSITION_STATE"
        }
      }
    },
    "Level_InitializeBonusData": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353760,
            "rva": 159456,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_BonusParameterBits1"
                },
                "instr_offset": 123,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_BonusParameterBits2"
                },
                "instr_offset": 129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_BonusParameterBits3"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_CodeDispatchTable"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_MenuDifficultyToken"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_RFF"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_SaveGameBonusData"
                },
                "instr_offset": 6,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_SaveGameBonusNameEntryBuffer"
                },
                "instr_offset": 18,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 140,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355712,
            "rva": 161408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_BonusParameterBits1"
                },
                "instr_offset": 123,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_BonusParameterBits2"
                },
                "instr_offset": 129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_BonusParameterBits3"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_CodeDispatchTable"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_MenuDifficultyToken"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_RFF"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_SaveGameBonusData"
                },
                "instr_offset": 6,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_SaveGameBonusNameEntryBuffer"
                },
                "instr_offset": 18,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 140,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355712,
            "rva": 161408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_BonusParameterBits1"
                },
                "instr_offset": 123,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_BonusParameterBits2"
                },
                "instr_offset": 129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_BonusParameterBits3"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_CodeDispatchTable"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_MenuDifficultyToken"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_RFF"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_SaveGameBonusData"
                },
                "instr_offset": 6,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeBonusData_SaveGameBonusNameEntryBuffer"
                },
                "instr_offset": 18,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 140,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "level_id",
              "type": "int32_t"
            },
            {
              "name": "array_index",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeBonusData_CodeDispatchTable"
            },
            "instr_offset": 39,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeBonusData_MenuDifficultyToken"
            },
            "instr_offset": 82,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeBonusData_RFF"
            },
            "instr_offset": 46,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeBonusData_SaveGameBonusData"
            },
            "instr_offset": 6,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeBonusData_SaveGameBonusNameEntryBuffer"
            },
            "instr_offset": 18,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeBonusData_BonusParameterBits1"
            },
            "instr_offset": 123,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeBonusData_BonusParameterBits2"
            },
            "instr_offset": 129,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeBonusData_BonusParameterBits3"
            },
            "instr_offset": 135,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "24 8D ?? ?? ?? ?? B9 ??",
          "match_offset": -40
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 315,
          "symbol_index": 315,
          "accessor": "DTTR_PCDOGS_F_Level_InitializeBonusData",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_INITIALIZE_BONUS_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_INITIALIZE_BONUS_DATA"
        }
      }
    },
    "Level_InitializeBonusData_BonusParameterBits1": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830216,
            "rva": 23635912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 123,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841480,
            "rva": 23647176,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 123,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840904,
            "rva": 23646600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 123,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeBonusData"
            },
            "instr_offset": 123,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Packed bonus-parameter bit-slice extracted during bonus data initialization; exact gameplay meaning remains unstable.",
        "sdk": {
          "id": 950,
          "symbol_index": 950,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeBonusData_BonusParameterBits1",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_BONUS_DATA_BONUS_PARAMETER_BITS1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_BONUS_DATA_BONUS_PARAMETER_BITS1"
        }
      }
    },
    "Level_InitializeBonusData_BonusParameterBits2": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830220,
            "rva": 23635916,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841484,
            "rva": 23647180,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840908,
            "rva": 23646604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 129,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeBonusData"
            },
            "instr_offset": 129,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Packed bonus-parameter bit-slice extracted during bonus data initialization; exact gameplay meaning remains unstable.",
        "sdk": {
          "id": 951,
          "symbol_index": 951,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeBonusData_BonusParameterBits2",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_BONUS_DATA_BONUS_PARAMETER_BITS2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_BONUS_DATA_BONUS_PARAMETER_BITS2"
        }
      }
    },
    "Level_InitializeBonusData_BonusParameterBits3": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830224,
            "rva": 23635920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841488,
            "rva": 23647184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840912,
            "rva": 23646608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeBonusData"
            },
            "instr_offset": 135,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Packed bonus-parameter bit-slice extracted during bonus data initialization; exact gameplay meaning remains unstable.",
        "sdk": {
          "id": 952,
          "symbol_index": 952,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeBonusData_BonusParameterBits3",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_BONUS_DATA_BONUS_PARAMETER_BITS3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_BONUS_DATA_BONUS_PARAMETER_BITS3"
        }
      }
    },
    "Level_InitializeBonusData_CodeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4353904,
            "rva": 159600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4355856,
            "rva": 161552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4355856,
            "rva": 161552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 39,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeBonusData"
            },
            "instr_offset": 39,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_InitializeBonusData",
          "instr_offset": 39,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Five-entry uint32_t jump table used by Level_InitializeBonusData for bonus level ids 27..31.",
        "sdk": {
          "id": 45,
          "symbol_index": 45,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeBonusData_CodeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_BONUS_DATA_CODE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_BONUS_DATA_CODE_DISPATCH_TABLE"
        }
      }
    },
    "Level_InitializeBonusData_MenuDifficultyToken": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525796,
            "rva": 331492,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533988,
            "rva": 339684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533988,
            "rva": 339684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeBonusData"
            },
            "instr_offset": 82,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Menu difficulty token/string selector consumed while initializing bonus data.",
        "sdk": {
          "id": 213,
          "symbol_index": 213,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeBonusData_MenuDifficultyToken",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_BONUS_DATA_MENU_DIFFICULTY_TOKEN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_BONUS_DATA_MENU_DIFFICULTY_TOKEN"
        }
      }
    },
    "Level_InitializeBonusData_RFF": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525804,
            "rva": 331500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533996,
            "rva": 339692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533996,
            "rva": 339692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeBonusData"
            },
            "instr_offset": 46,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 214,
          "symbol_index": 214,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeBonusData_RFF",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_BONUS_DATA_RFF",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_BONUS_DATA_RFF"
        }
      }
    },
    "Level_InitializeBonusData_SaveGameBonusData": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831792,
            "rva": 637488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 6,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840688,
            "rva": 646384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 6,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840672,
            "rva": 646368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 6,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeBonusData"
            },
            "instr_offset": 6,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint16_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_InitializeBonusData",
          "instr_offset": 6,
          "addr_offset": 4,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First entry of the active Save_GameSlot packed bonus-level parameter table read by Level_InitializeBonusData.",
        "sdk": {
          "id": 556,
          "symbol_index": 556,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeBonusData_SaveGameBonusData",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_BONUS_DATA_SAVE_GAME_BONUS_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_BONUS_DATA_SAVE_GAME_BONUS_DATA"
        }
      }
    },
    "Level_InitializeBonusData_SaveGameBonusNameEntryBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831804,
            "rva": 637500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 18,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840700,
            "rva": 646396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 18,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840684,
            "rva": 646380,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 18,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeBonusData"
            },
            "instr_offset": 18,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_InitializeBonusData",
          "instr_offset": 18,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First byte of the active Save_GameSlot bonus/name-entry payload copied with each save slot.",
        "sdk": {
          "id": 558,
          "symbol_index": 558,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeBonusData_SaveGameBonusNameEntryBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_BONUS_DATA_SAVE_GAME_BONUS_NAME_ENTRY_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_BONUS_DATA_SAVE_GAME_BONUS_NAME_ENTRY_BUFFER"
        }
      }
    },
    "Level_InitializeSaveState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4354480,
            "rva": 160176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_BonusUnlocked"
                },
                "instr_offset": 169,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameBackupPuppyCount"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameBackupPuppyCount"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameBonusProgressValue"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GamePuppyCountBackup"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameStateInitFlag"
                },
                "instr_offset": 496,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_MenuSlots"
                },
                "instr_offset": 246,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_BuildCompletionTable"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetGameHighestWorld"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4356432,
            "rva": 162128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_BonusUnlocked"
                },
                "instr_offset": 169,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameBackupPuppyCount"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameBackupPuppyCount"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameBonusProgressValue"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GamePuppyCountBackup"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameStateInitFlag"
                },
                "instr_offset": 496,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_MenuSlots"
                },
                "instr_offset": 246,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_BuildCompletionTable"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetGameHighestWorld"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4356432,
            "rva": 162128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_BonusUnlocked"
                },
                "instr_offset": 169,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameBackupPuppyCount"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameBackupPuppyCount"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameBonusProgressValue"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GamePuppyCountBackup"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_GameStateInitFlag"
                },
                "instr_offset": 496,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_InitializeSaveState_MenuSlots"
                },
                "instr_offset": 246,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_BuildCompletionTable"
                },
                "instr_offset": 437,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 362,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetGameHighestWorld"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeSaveState_GamePuppyCountBackup"
            },
            "instr_offset": 7,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeSaveState_GameBackupPuppyCount"
            },
            "instr_offset": 15,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeSaveState_GameBackupPuppyCount"
            },
            "instr_offset": 20,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeSaveState_MenuSlots"
            },
            "instr_offset": 246,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeSaveState_GameBonusProgressValue"
            },
            "instr_offset": 485,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeSaveState_GameStateInitFlag"
            },
            "instr_offset": 496,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_InitializeSaveState_BonusUnlocked"
            },
            "instr_offset": 169,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? 8B F0 52 4E E8 ??",
          "match_offset": -51
        },
        "docs": "Initializes level save/progress state and returns helper status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 320,
          "symbol_index": 320,
          "accessor": "DTTR_PCDOGS_F_Level_InitializeSaveState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_INITIALIZE_SAVE_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_INITIALIZE_SAVE_STATE"
        }
      }
    },
    "Level_InitializeSaveState_BonusUnlocked": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830200,
            "rva": 23635896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 169,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841464,
            "rva": 23647160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 169,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840888,
            "rva": 23646584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 169,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeSaveState"
            },
            "instr_offset": 169,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 947,
          "symbol_index": 947,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeSaveState_BonusUnlocked",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_SAVE_STATE_BONUS_UNLOCKED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_SAVE_STATE_BONUS_UNLOCKED"
        }
      }
    },
    "Level_InitializeSaveState_GameBackupPuppyCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831900,
            "rva": 637596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840804,
            "rva": 646500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840788,
            "rva": 646484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeSaveState"
            },
            "instr_offset": 15,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeSaveState"
            },
            "instr_offset": 20,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 580,
          "symbol_index": 580,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeSaveState_GameBackupPuppyCount",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_SAVE_STATE_GAME_BACKUP_PUPPY_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_SAVE_STATE_GAME_BACKUP_PUPPY_COUNT"
        }
      }
    },
    "Level_InitializeSaveState_GameBonusProgressValue": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830128,
            "rva": 23635824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841392,
            "rva": 23647088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840816,
            "rva": 23646512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeSaveState"
            },
            "instr_offset": 485,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 932,
          "symbol_index": 932,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeSaveState_GameBonusProgressValue",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_SAVE_STATE_GAME_BONUS_PROGRESS_VALUE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_SAVE_STATE_GAME_BONUS_PROGRESS_VALUE"
        }
      }
    },
    "Level_InitializeSaveState_GamePuppyCountBackup": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831738,
            "rva": 637434,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840634,
            "rva": 646330,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840618,
            "rva": 646314,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeSaveState"
            },
            "instr_offset": 7,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_InitializeSaveState",
          "instr_offset": 7,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Active Save_GameSlot+2 puppy/life backup byte, seeded to 3 by Save_InitializeGameState and updated by Save_BackupGamePuppyCount.",
        "sdk": {
          "id": 553,
          "symbol_index": 553,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeSaveState_GamePuppyCountBackup",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_SAVE_STATE_GAME_PUPPY_COUNT_BACKUP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_SAVE_STATE_GAME_PUPPY_COUNT_BACKUP"
        }
      }
    },
    "Level_InitializeSaveState_GameStateInitFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830132,
            "rva": 23635828,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 496,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841396,
            "rva": 23647092,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 496,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840820,
            "rva": 23646516,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 496,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeSaveState"
            },
            "instr_offset": 496,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 933,
          "symbol_index": 933,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeSaveState_GameStateInitFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_SAVE_STATE_GAME_STATE_INIT_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_SAVE_STATE_GAME_STATE_INIT_FLAG"
        }
      }
    },
    "Level_InitializeSaveState_MenuSlots": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830080,
            "rva": 23635776,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 246,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841344,
            "rva": 23647040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 246,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840768,
            "rva": 23646464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 246,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_InitializeSaveState"
            },
            "instr_offset": 246,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 928,
          "symbol_index": 928,
          "accessor": "DTTR_PCDOGS_D_Level_InitializeSaveState_MenuSlots",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_INITIALIZE_SAVE_STATE_MENU_SLOTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_INITIALIZE_SAVE_STATE_MENU_SLOTS"
        }
      }
    },
    "Level_Load": {
      "function": {
        "analysis": {
          "en": {
            "address": 4379744,
            "rva": 185440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_Load_MainMenuState"
                },
                "instr_offset": 175,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_Load_StateDispatchTable"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 274,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 391,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 442,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_InitializeColorGradient"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 211,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 292,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 368,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 418,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitializeGameState"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_Load_MainMenuState"
                },
                "instr_offset": 175,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_Load_StateDispatchTable"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_Load_MainMenuState"
                },
                "instr_offset": 175,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_Load_StateDispatchTable"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Level_Load_StateDispatchTable"
            },
            "instr_offset": 16,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_Load_MainMenuState"
            },
            "instr_offset": 175,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0F BE 05 ?? ?? ?? ?? 83 F8 0A 0F 87 ??",
          "match_offset": 0
        },
        "docs": "Top-level level/menu loading state machine driven by level_menu_load_state. Dispatches states 0..10 through level_load_state_dispatch_table: title/common-resource setup, inter-level menu, world select, splash loading, and Game_TransitionToLevel; state 9 falls through to the idle/return path.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 390,
          "symbol_index": 390,
          "accessor": "DTTR_PCDOGS_F_Level_Load",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_LOAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_LOAD"
        }
      }
    },
    "Level_LoadStateMachine": {
      "function": {
        "analysis": {
          "en": {
            "address": 4451408,
            "rva": 257104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_LoadStateMachine_PKGLevelStreamLoadState"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_LoadStateMachine_PKGResourceLevelTexDataA"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_LoadStateMachine_PKGResourceLevelTexDataB"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 241,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 257,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReturnResourceAlwaysTrue"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReturnResourceAlwaysTrue"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReturnResourceAlwaysTrue"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_LoadStateMachine_PKGLevelStreamLoadState"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_LoadStateMachine_PKGResourceLevelTexDataA"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_LoadStateMachine_PKGResourceLevelTexDataB"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_LoadStateMachine_PKGLevelStreamLoadState"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_LoadStateMachine_PKGResourceLevelTexDataA"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_LoadStateMachine_PKGResourceLevelTexDataB"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t*",
          "params": [
            {
              "name": "level_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Level_LoadStateMachine_PKGLevelStreamLoadState"
            },
            "instr_offset": 12,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_LoadStateMachine_PKGResourceLevelTexDataA"
            },
            "instr_offset": 32,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_LoadStateMachine_PKGResourceLevelTexDataB"
            },
            "instr_offset": 104,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 56 57 33 FF 8D 4C 40 24 A1 ??",
          "match_offset": 0
        },
        "docs": "Incremental level package loader keyed by package level_index. Level resources are loaded from TOC entries 0x24 + level_index * 3 + {0,1,2}; stages 0,1,2,4,5,7 load texture A, wait, load texture B, wait, load the level blob, then fix up materials/nodes/level pointers and reset level_stream_load_state to 0.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 539,
          "symbol_index": 539,
          "accessor": "DTTR_PCDOGS_F_Level_LoadStateMachine",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_LOAD_STATE_MACHINE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_LOAD_STATE_MACHINE"
        }
      }
    },
    "Level_LoadStateMachine_PKGLevelStreamLoadState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835940,
            "rva": 641636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_LoadStateMachine"
            },
            "instr_offset": 12,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_LoadStateMachine",
          "instr_offset": 12,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Async package-stream loader stage dword used only by Level_LoadStateMachine; stages 0,1,2,4,5,7 load level TOC entries and then reset this state to zero.",
        "sdk": {
          "id": 689,
          "symbol_index": 689,
          "accessor": "DTTR_PCDOGS_D_Level_LoadStateMachine_PKGLevelStreamLoadState",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_LOAD_STATE_MACHINE_PKG_LEVEL_STREAM_LOAD_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_LOAD_STATE_MACHINE_PKG_LEVEL_STREAM_LOAD_STATE"
        }
      }
    },
    "Level_LoadStateMachine_PKGResourceLevelTexDataA": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835944,
            "rva": 641640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_LoadStateMachine"
            },
            "instr_offset": 32,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_LoadStateMachine",
          "instr_offset": 32,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Internal first level package-entry buffer loaded from TOC entry 0x24 + level_index * 3 by Level_LoadStateMachine stage 0.",
        "sdk": {
          "id": 690,
          "symbol_index": 690,
          "accessor": "DTTR_PCDOGS_D_Level_LoadStateMachine_PKGResourceLevelTexDataA",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_LOAD_STATE_MACHINE_PKG_RESOURCE_LEVEL_TEX_DATA_A",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_LOAD_STATE_MACHINE_PKG_RESOURCE_LEVEL_TEX_DATA_A"
        }
      }
    },
    "Level_LoadStateMachine_PKGResourceLevelTexDataB": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835948,
            "rva": 641644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_LoadStateMachine"
            },
            "instr_offset": 104,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_LoadStateMachine",
          "instr_offset": 104,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Internal second level package-entry buffer loaded from TOC entry 0x25 + level_index * 3 by Level_LoadStateMachine stage 2.",
        "sdk": {
          "id": 691,
          "symbol_index": 691,
          "accessor": "DTTR_PCDOGS_D_Level_LoadStateMachine_PKGResourceLevelTexDataB",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_LOAD_STATE_MACHINE_PKG_RESOURCE_LEVEL_TEX_DATA_B",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_LOAD_STATE_MACHINE_PKG_RESOURCE_LEVEL_TEX_DATA_B"
        }
      }
    },
    "Level_Load_MainMenuState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831996,
            "rva": 637692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 175,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 175,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 175,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_Load"
            },
            "instr_offset": 175,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 612,
          "symbol_index": 612,
          "accessor": "DTTR_PCDOGS_D_Level_Load_MainMenuState",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_LOAD_MAIN_MENU_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_LOAD_MAIN_MENU_STATE"
        }
      }
    },
    "Level_Load_StateDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4380208,
            "rva": 185904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_Load"
            },
            "instr_offset": 16,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Level_Load",
          "instr_offset": 16,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Eleven-entry uint32_t jump table used by Level_Load for level-loading state values 0..10; state 9 maps to the idle/default return path.",
        "sdk": {
          "id": 49,
          "symbol_index": 49,
          "accessor": "DTTR_PCDOGS_D_Level_Load_StateDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_LOAD_STATE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_LOAD_STATE_DISPATCH_TABLE"
        }
      }
    },
    "Level_PassthroughIndex": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353488,
            "rva": 159184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355440,
            "rva": 161136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355440,
            "rva": 161136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "level_id",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 C3 90 90 90 90 90 90 90 90 90 90 90 8B 44 24 04 56 50 E8 ??",
          "match_offset": 0
        },
        "docs": "Identity passthrough: returns level_id unchanged.",
        "hook": {
          "kind": "hotpatch",
          "patch_size": 4,
          "entry_patch_size": 2
        },
        "sdk": {
          "id": 312,
          "symbol_index": 312,
          "accessor": "DTTR_PCDOGS_F_Level_PassthroughIndex",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_PASSTHROUGH_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_PASSTHROUGH_INDEX"
        }
      }
    },
    "Level_ResetBonusState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4361248,
            "rva": 166944,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_ResetBonusState_MenuInitialEntryFlag"
                },
                "instr_offset": 12,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 231,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_ResetBonusState_MenuInitialEntryFlag"
                },
                "instr_offset": 12,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_ResetBonusState_MenuInitialEntryFlag"
                },
                "instr_offset": 12,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Level_ResetBonusState_MenuInitialEntryFlag"
            },
            "instr_offset": 12,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FA B5 49 00 C3 C7 05 ??",
          "match_offset": -26
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 346,
          "symbol_index": 346,
          "accessor": "DTTR_PCDOGS_F_Level_ResetBonusState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_RESET_BONUS_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_RESET_BONUS_STATE"
        }
      }
    },
    "Level_ResetBonusState_MenuInitialEntryFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830120,
            "rva": 23635816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_ResetBonusState"
                },
                "instr_offset": 12,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_ResetBonusState"
                },
                "instr_offset": 12,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_ResetBonusState"
                },
                "instr_offset": 12,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_ResetBonusState"
            },
            "instr_offset": 12,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 930,
          "symbol_index": 930,
          "accessor": "DTTR_PCDOGS_D_Level_ResetBonusState_MenuInitialEntryFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_RESET_BONUS_STATE_MENU_INITIAL_ENTRY_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_RESET_BONUS_STATE_MENU_INITIAL_ENTRY_FLAG"
        }
      }
    },
    "Level_RuntimeData": {
      "type": {
        "members": [
          {
            "type": "Camera_Runtime*",
            "name": "cam_default",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Camera_Runtime*",
            "name": "cam_current",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "current_entity_index",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "entity_count",
            "offset": 10,
            "doc": "Number of valid level-local runtime entity slots in entity_array for the currently loaded level."
          },
          {
            "type": "Entity_State*",
            "name": "entity_array",
            "offset": 12,
            "doc": "Array of level-local runtime entity slots. Pointers into this array identify Entity_State slots within the currently loaded level."
          },
          {
            "type": "Audio_SoundDefinition*",
            "name": "sound_definition_list",
            "offset": 16,
            "doc": "Current-level sound-definition array, indexed by level-local sound operands."
          },
          {
            "type": "int16_t",
            "name": "sound_definition_count",
            "offset": 20,
            "doc": "Sound-definition count halfword; kept split from var_count after resolver contract."
          },
          {
            "type": "int16_t",
            "name": "var_count",
            "offset": 22,
            "doc": "Script variable count halfword, stored separately from sound_definition_count."
          },
          {
            "type": "int32_t*",
            "name": "var_list",
            "offset": 24,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "powerup_count",
            "offset": 28,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "powerup_type_count",
            "offset": 30,
            "doc": null
          },
          {
            "type": "Powerup_Entry*",
            "name": "powerup_list",
            "offset": 32,
            "doc": "Current-level powerup spawn-record list keyed by powerup_count."
          },
          {
            "type": "PKG_ActorTemplate*",
            "name": "powerup_actor_template_slots[16]",
            "offset": 36,
            "doc": "Fixed 16-slot powerup actor-template/clone-source table. PKG_FixUpResourceLevelPointers fixes each non-null slot with PKG_FixUpResourceActorRecordPointers; Powerup_CloneActorFromTemplate reads these PKG_ActorTemplate* sources when creating spawned powerup actors."
          },
          {
            "type": "char*",
            "name": "themes[5]",
            "offset": 100,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "theme_count",
            "offset": 120,
            "doc": null
          },
          {
            "type": "Trail_Entry*",
            "name": "trail_list",
            "offset": 124,
            "doc": null
          },
          {
            "type": "PKG_SpriteEntry*",
            "name": "sprite_list",
            "offset": 128,
            "doc": null
          },
          {
            "type": "Nav_Network*",
            "name": "nav_net",
            "offset": 132,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "usable_materials",
            "offset": 136,
            "doc": null
          }
        ],
        "size": 140,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Concrete runtime level-data block carried by Level_Data* APIs.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Level_RuntimeData"
        }
      }
    },
    "Level_SetMenuProgressState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353504,
            "rva": 159200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_SetMenuProgressState_SubmenuCount"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_Selection"
                },
                "instr_offset": 68,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 140,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_PassthroughIndex"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355456,
            "rva": 161152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_SetMenuProgressState_SubmenuCount"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_Selection"
                },
                "instr_offset": 68,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 140,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_PassthroughIndex"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355456,
            "rva": 161152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_SetMenuProgressState_SubmenuCount"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_Selection"
                },
                "instr_offset": 68,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeBonusData"
                },
                "instr_offset": 140,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_PassthroughIndex"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "level_id",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_Selection"
            },
            "instr_offset": 68,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_SetMenuProgressState_SubmenuCount"
            },
            "instr_offset": 74,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 56 50 E8 ?? ?? ?? ?? 8B F0 56 E8 ?? ?? ?? ?? 83 C4 08 83 FE 07 7C ?? 83 FE 1B 7D ?? 83 FE 0B 74 ?? 83 FE 10 74 ?? 83 FE 15 74 ?? 83 FE 1A 74 ?? 0F BE 88 ?? ?? ?? ?? 0F BE 80 ?? ?? ?? ?? 33 D2",
          "match_offset": 0
        },
        "docs": "Normalizes the requested level id and updates the menu progress state global.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 313,
          "symbol_index": 313,
          "accessor": "DTTR_PCDOGS_F_Level_SetMenuProgressState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_SET_MENU_PROGRESS_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_SET_MENU_PROGRESS_STATE"
        }
      }
    },
    "Level_SetMenuProgressState_SubmenuCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830052,
            "rva": 23635748,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841316,
            "rva": 23647012,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840740,
            "rva": 23646436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 74,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_SetMenuProgressState"
            },
            "instr_offset": 74,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 926,
          "symbol_index": 926,
          "accessor": "DTTR_PCDOGS_D_Level_SetMenuProgressState_SubmenuCount",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_SET_MENU_PROGRESS_STATE_SUBMENU_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_SET_MENU_PROGRESS_STATE_SUBMENU_COUNT"
        }
      }
    },
    "Level_State": {
      "type": {
        "members": [
          {
            "type": "void*",
            "name": "collision_data",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "actor_list",
            "offset": 4,
            "doc": "Level-local live Actor_State list/table pointer."
          },
          {
            "type": "void*",
            "name": "trigger_list",
            "offset": 8,
            "doc": null
          },
          {
            "type": "PKG_CameraDef*",
            "name": "camera_data",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "material_table",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved_01",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 24,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "actor_count",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "material_count",
            "offset": 30,
            "doc": null
          },
          {
            "type": "char*",
            "name": "string_table",
            "offset": 32,
            "doc": null
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Level_State"
        }
      }
    },
    "Level_TransitionTimingData": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "start_delay_fp12",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "mid_duration_fp12",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "end_duration_fp12",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "FP12 level-transition timing block passed to Level_TriggerTransition: start delay, mid duration, and end duration.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Level_TransitionTimingData"
        }
      }
    },
    "Level_TriggerTransition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4219888,
            "rva": 25584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 708,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 667,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2533,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTriggerLevelTransition"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4220336,
            "rva": 26032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 708,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 667,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2533,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTriggerLevelTransition"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4220336,
            "rva": 26032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 708,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 667,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2533,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpTriggerLevelTransition"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "target_level_index",
              "type": "int32_t"
            },
            {
              "name": "transition_flags",
              "type": "uint32_t"
            },
            {
              "name": "transition_timing",
              "type": "Level_TransitionTimingData*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 8B 0D ?? ?? ?? ?? 53",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 73,
          "symbol_index": 73,
          "accessor": "DTTR_PCDOGS_F_Level_TriggerTransition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_TRIGGER_TRANSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_TRIGGER_TRANSITION"
        }
      }
    },
    "Level_UnloadResources": {
      "function": {
        "analysis": {
          "en": {
            "address": 4451744,
            "rva": 257440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4457184,
            "rva": 262880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4457152,
            "rva": 262848,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "level_resource_data",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 8B 4C",
          "match_offset": 0
        },
        "docs": "Release the level material section and free the level resource blob plus cached level texture data buffers.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 540,
          "symbol_index": 540,
          "accessor": "DTTR_PCDOGS_F_Level_UnloadResources",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_UNLOAD_RESOURCES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_UNLOAD_RESOURCES"
        }
      }
    },
    "Level_UpdateInterLevelMenu": {
      "function": {
        "analysis": {
          "en": {
            "address": 4380864,
            "rva": 186560,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateInterLevelMenu_FadeTimer"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateInterLevelMenu_MainMenuSelection"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Options_MenuSelection"
                },
                "instr_offset": 181,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 443,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 1005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 926,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 987,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 1013,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 918,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 979,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 537,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 617,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 787,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderButtonPrompts"
                },
                "instr_offset": 859,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 831,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 211,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4385744,
            "rva": 191440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateInterLevelMenu_FadeTimer"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateInterLevelMenu_MainMenuSelection"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Options_MenuSelection"
                },
                "instr_offset": 181,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 443,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 1005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 918,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 979,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 537,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 617,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 831,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4385712,
            "rva": 191408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateInterLevelMenu_FadeTimer"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateInterLevelMenu_MainMenuSelection"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Options_MenuSelection"
                },
                "instr_offset": 181,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 443,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 1005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 918,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 979,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 537,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 617,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 787,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 831,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Options_MenuSelection"
            },
            "instr_offset": 181,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_UpdateInterLevelMenu_MainMenuSelection"
            },
            "instr_offset": 266,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_UpdateInterLevelMenu_FadeTimer"
            },
            "instr_offset": 18,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A0 ?? ?? ?? ?? 83 EC 08 3C 03 53 56 0F 85 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 393,
          "symbol_index": 393,
          "accessor": "DTTR_PCDOGS_F_Level_UpdateInterLevelMenu",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_UPDATE_INTER_LEVEL_MENU",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_UPDATE_INTER_LEVEL_MENU"
        }
      }
    },
    "Level_UpdateInterLevelMenu_FadeTimer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831999,
            "rva": 637695,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840903,
            "rva": 646599,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840887,
            "rva": 646583,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_UpdateInterLevelMenu"
            },
            "instr_offset": 18,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 614,
          "symbol_index": 614,
          "accessor": "DTTR_PCDOGS_D_Level_UpdateInterLevelMenu_FadeTimer",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_UPDATE_INTER_LEVEL_MENU_FADE_TIMER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_UPDATE_INTER_LEVEL_MENU_FADE_TIMER"
        }
      }
    },
    "Level_UpdateInterLevelMenu_MainMenuSelection": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831997,
            "rva": 637693,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840901,
            "rva": 646597,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840885,
            "rva": 646581,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_UpdateInterLevelMenu"
            },
            "instr_offset": 266,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 613,
          "symbol_index": 613,
          "accessor": "DTTR_PCDOGS_D_Level_UpdateInterLevelMenu_MainMenuSelection",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_UPDATE_INTER_LEVEL_MENU_MAIN_MENU_SELECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_UPDATE_INTER_LEVEL_MENU_MAIN_MENU_SELECTION"
        }
      }
    },
    "Level_UpdateWorldSelectMenu": {
      "function": {
        "analysis": {
          "en": {
            "address": 4380384,
            "rva": 186080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateWorldSelectMenu_FadeCounter"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateWorldSelectMenu_Slot"
                },
                "instr_offset": 70,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateWorldSelectMenu_State"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CheckDeviceLost"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 434,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 261,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 457,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 441,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 292,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4385264,
            "rva": 190960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateWorldSelectMenu_FadeCounter"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateWorldSelectMenu_Slot"
                },
                "instr_offset": 70,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateWorldSelectMenu_State"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CheckDeviceLost"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 434,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 441,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 884,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4385232,
            "rva": 190928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateWorldSelectMenu_FadeCounter"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateWorldSelectMenu_Slot"
                },
                "instr_offset": 70,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Level_UpdateWorldSelectMenu_State"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CheckDeviceLost"
                },
                "instr_offset": 339,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 434,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 441,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 884,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "menu_context",
              "type": "int32_t"
            }
          ],
          "calling_convention": "fastcall",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Level_UpdateWorldSelectMenu_State"
            },
            "instr_offset": 1,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_UpdateWorldSelectMenu_Slot"
            },
            "instr_offset": 70,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Level_UpdateWorldSelectMenu_FadeCounter"
            },
            "instr_offset": 10,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 A0 ?? ?? ?? ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 392,
          "symbol_index": 392,
          "accessor": "DTTR_PCDOGS_F_Level_UpdateWorldSelectMenu",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_LEVEL_UPDATE_WORLD_SELECT_MENU",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_LEVEL_UPDATE_WORLD_SELECT_MENU"
        }
      }
    },
    "Level_UpdateWorldSelectMenu_FadeCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831979,
            "rva": 637675,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840883,
            "rva": 646579,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840867,
            "rva": 646563,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_UpdateWorldSelectMenu"
            },
            "instr_offset": 10,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 607,
          "symbol_index": 607,
          "accessor": "DTTR_PCDOGS_D_Level_UpdateWorldSelectMenu_FadeCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_UPDATE_WORLD_SELECT_MENU_FADE_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_UPDATE_WORLD_SELECT_MENU_FADE_COUNTER"
        }
      }
    },
    "Level_UpdateWorldSelectMenu_Slot": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831978,
            "rva": 637674,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 70,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840882,
            "rva": 646578,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 70,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840866,
            "rva": 646562,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 70,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_UpdateWorldSelectMenu"
            },
            "instr_offset": 70,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 606,
          "symbol_index": 606,
          "accessor": "DTTR_PCDOGS_D_Level_UpdateWorldSelectMenu_Slot",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_UPDATE_WORLD_SELECT_MENU_SLOT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_UPDATE_WORLD_SELECT_MENU_SLOT"
        }
      }
    },
    "Level_UpdateWorldSelectMenu_State": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831977,
            "rva": 637673,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840881,
            "rva": 646577,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840865,
            "rva": 646561,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_UpdateWorldSelectMenu"
            },
            "instr_offset": 1,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 605,
          "symbol_index": 605,
          "accessor": "DTTR_PCDOGS_D_Level_UpdateWorldSelectMenu_State",
          "sdk_id": "DTTR_PCDOGS_DATA_LEVEL_UPDATE_WORLD_SELECT_MENU_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_LEVEL_UPDATE_WORLD_SELECT_MENU_STATE"
        }
      }
    },
    "Material_BlendTextureSet": {
      "type": {
        "members": [
          {
            "type": "DDraw_IDirectDrawSurface7*",
            "name": "quadrants[4]",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_BlendTextureSet"
        }
      }
    },
    "Material_BuildStructure": {
      "function": {
        "analysis": {
          "en": {
            "address": 4382000,
            "rva": 187696,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1335,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4387008,
            "rva": 192704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1408,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4386976,
            "rva": 192672,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1408,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "material_section",
              "type": "Material_SectionHeader*",
              "docs": "Material section whose node/material tables are referenced while building the frame record."
            },
            {
              "name": "ref_out",
              "type": "Material_RefEntry*",
              "docs": "Receives the material section pointer, selected material table entry pointer, and frame-set pointer."
            },
            {
              "name": "optional_output_table",
              "type": "Material_FrameSet*",
              "docs": "Optional output buffer for the Material_FrameSet header followed by frame pointers and frame records."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 47 04 85 C0 0F 84 ??",
          "match_offset": -40
        },
        "docs": "Builds a Material_RefEntry and optional Material_FrameSet for one material. Frame records are initialized except for the packed material-node reference.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 394,
          "symbol_index": 394,
          "accessor": "DTTR_PCDOGS_F_Material_BuildStructure",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_BUILD_STRUCTURE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_BUILD_STRUCTURE"
        }
      }
    },
    "Material_BuildTextureArray": {
      "function": {
        "analysis": {
          "en": {
            "address": 4382240,
            "rva": 187936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildStructure"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4387248,
            "rva": 192944,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildStructure"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 505,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4387216,
            "rva": 192912,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildStructure"
                },
                "instr_offset": 56,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 502,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "material_table",
              "type": "Material_Table*",
              "docs": "Material table/base whose material-entry position addresses material records."
            },
            {
              "name": "material_refs",
              "type": "Material_RefEntry*",
              "docs": "First material reference record to initialize."
            },
            {
              "name": "material_count",
              "type": "int32_t",
              "docs": "Number of consecutive material reference records to build."
            },
            {
              "name": "first_material_index",
              "type": "int32_t",
              "docs": "Starting source material index used to compute each material record position."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C0 56 8B 4D 0C 8B 35 ??",
          "match_offset": -12
        },
        "docs": "Builds material reference/frame data for materialCount entries and advances material_buffer_offset.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 395,
          "symbol_index": 395,
          "accessor": "DTTR_PCDOGS_F_Material_BuildTextureArray",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_BUILD_TEXTURE_ARRAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_BUILD_TEXTURE_ARRAY"
        }
      }
    },
    "Material_ClearTextureCache": {
      "function": {
        "analysis": {
          "en": {
            "address": 4274848,
            "rva": 80544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4275328,
            "rva": 81024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4275328,
            "rva": 81024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "HRESULT",
          "params": [
            {
              "name": "descriptor",
              "type": "Material_RuntimeDescriptor*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "75 ?? 8D 46 0C 50 E8 ??",
          "match_offset": -10
        },
        "docs": "Clears or releases a material descriptor's 25 cached texture handles and invalidates its cached transparent color.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 186,
          "symbol_index": 186,
          "accessor": "DTTR_PCDOGS_F_Material_ClearTextureCache",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_CLEAR_TEXTURE_CACHE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_CLEAR_TEXTURE_CACHE"
        }
      }
    },
    "Material_ComputeAvgTransparentColor": {
      "function": {
        "analysis": {
          "en": {
            "address": 4276448,
            "rva": 82144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4276928,
            "rva": 82624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4276928,
            "rva": 82624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t",
          "params": [
            {
              "name": "pixel_data",
              "type": "uint8_t*"
            },
            {
              "name": "width",
              "type": "uint32_t"
            },
            {
              "name": "height",
              "type": "uint32_t"
            },
            {
              "name": "out_red",
              "type": "uint8_t*"
            },
            {
              "name": "out_green",
              "type": "uint8_t*"
            },
            {
              "name": "out_blue",
              "type": "uint8_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "D2 88 5C 24 40 0F 85 ??",
          "match_offset": -59
        },
        "docs": "Computes average non-black horizontal neighbor RGB for black/transparent pixels in an RGBx buffer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 190,
          "symbol_index": 190,
          "accessor": "DTTR_PCDOGS_F_Material_ComputeAvgTransparentColor",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_COMPUTE_AVG_TRANSPARENT_COLOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_COMPUTE_AVG_TRANSPARENT_COLOR"
        }
      }
    },
    "Material_CopyPixelDataToTexture": {
      "function": {
        "analysis": {
          "en": {
            "address": 4276880,
            "rva": 82576,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrBlt"
                },
                "instr_offset": 749,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrCopyMemTexNull"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrGetSurfacePtr"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrLock"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrWorkNull"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrorMessageBuffer"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 757,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ComputeAvgTransparentColor"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 948,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 1231,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4277360,
            "rva": 83056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrBlt"
                },
                "instr_offset": 749,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrCopyMemTexNull"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrGetSurfacePtr"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrLock"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrWorkNull"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrorMessageBuffer"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 757,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ComputeAvgTransparentColor"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 948,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 1231,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4277360,
            "rva": 83056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrBlt"
                },
                "instr_offset": 749,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrCopyMemTexNull"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrGetSurfacePtr"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrLock"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrWorkNull"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_CopyPixelDataToTexture_D3DErrorMessageBuffer"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateWorkSurface"
                },
                "instr_offset": 94,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_FormatDirectXError"
                },
                "instr_offset": 757,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 174,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ComputeAvgTransparentColor"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 948,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 1231,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "texture_surface",
              "type": "DDraw_IDirectDrawSurface7*"
            },
            {
              "name": "pixel_data",
              "type": "char*"
            },
            {
              "name": "unused_pixel_count",
              "type": "uint32_t",
              "docs": "Present in the native signature but never read by the routine."
            },
            {
              "name": "width",
              "type": "uint32_t"
            },
            {
              "name": "height",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Material_CopyPixelDataToTexture_D3DErrBlt"
            },
            "instr_offset": 749,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Material_CopyPixelDataToTexture_D3DErrGetSurfacePtr"
            },
            "instr_offset": 214,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Material_CopyPixelDataToTexture_D3DErrorMessageBuffer"
            },
            "instr_offset": 209,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Material_CopyPixelDataToTexture_D3DErrLock"
            },
            "instr_offset": 158,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Material_CopyPixelDataToTexture_D3DErrWorkNull"
            },
            "instr_offset": 115,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Material_CopyPixelDataToTexture_D3DErrCopyMemTexNull"
            },
            "instr_offset": 53,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "89 74 24 34 75 ?? 68 ??",
          "match_offset": -42
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 191,
          "symbol_index": 191,
          "accessor": "DTTR_PCDOGS_F_Material_CopyPixelDataToTexture",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE"
        }
      }
    },
    "Material_CopyPixelDataToTexture_D3DErrBlt": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515348,
            "rva": 321044,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 749,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523540,
            "rva": 329236,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 749,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523540,
            "rva": 329236,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 749,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Material_CopyPixelDataToTexture"
            },
            "instr_offset": 749,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 134,
          "symbol_index": 134,
          "accessor": "DTTR_PCDOGS_D_Material_CopyPixelDataToTexture_D3DErrBlt",
          "sdk_id": "DTTR_PCDOGS_DATA_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERR_BLT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERR_BLT"
        }
      }
    },
    "Material_CopyPixelDataToTexture_D3DErrCopyMemTexNull": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515456,
            "rva": 321152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523648,
            "rva": 329344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523648,
            "rva": 329344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Material_CopyPixelDataToTexture"
            },
            "instr_offset": 53,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 139,
          "symbol_index": 139,
          "accessor": "DTTR_PCDOGS_D_Material_CopyPixelDataToTexture_D3DErrCopyMemTexNull",
          "sdk_id": "DTTR_PCDOGS_DATA_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERR_COPY_MEM_TEX_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERR_COPY_MEM_TEX_NULL"
        }
      }
    },
    "Material_CopyPixelDataToTexture_D3DErrGetSurfacePtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515372,
            "rva": 321068,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523564,
            "rva": 329260,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523564,
            "rva": 329260,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Material_CopyPixelDataToTexture"
            },
            "instr_offset": 214,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 135,
          "symbol_index": 135,
          "accessor": "DTTR_PCDOGS_D_Material_CopyPixelDataToTexture_D3DErrGetSurfacePtr",
          "sdk_id": "DTTR_PCDOGS_DATA_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERR_GET_SURFACE_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERR_GET_SURFACE_PTR"
        }
      }
    },
    "Material_CopyPixelDataToTexture_D3DErrLock": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515416,
            "rva": 321112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523608,
            "rva": 329304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523608,
            "rva": 329304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Material_CopyPixelDataToTexture"
            },
            "instr_offset": 158,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 137,
          "symbol_index": 137,
          "accessor": "DTTR_PCDOGS_D_Material_CopyPixelDataToTexture_D3DErrLock",
          "sdk_id": "DTTR_PCDOGS_DATA_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERR_LOCK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERR_LOCK"
        }
      }
    },
    "Material_CopyPixelDataToTexture_D3DErrWorkNull": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515440,
            "rva": 321136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523632,
            "rva": 329328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523632,
            "rva": 329328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Material_CopyPixelDataToTexture"
            },
            "instr_offset": 115,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 138,
          "symbol_index": 138,
          "accessor": "DTTR_PCDOGS_D_Material_CopyPixelDataToTexture_D3DErrWorkNull",
          "sdk_id": "DTTR_PCDOGS_DATA_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERR_WORK_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERR_WORK_NULL"
        }
      }
    },
    "Material_CopyPixelDataToTexture_D3DErrorMessageBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515400,
            "rva": 321096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523592,
            "rva": 329288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523592,
            "rva": 329288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Material_CopyPixelDataToTexture"
            },
            "instr_offset": 209,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 136,
          "symbol_index": 136,
          "accessor": "DTTR_PCDOGS_D_Material_CopyPixelDataToTexture_D3DErrorMessageBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERROR_MESSAGE_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATERIAL_COPY_PIXEL_DATA_TO_TEXTURE_D3D_ERROR_MESSAGE_BUFFER"
        }
      }
    },
    "Material_DataRef": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "level_base_address",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_id",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Math_SizeU16",
            "name": "actual_dimensions",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved[12]",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_DataRef"
        }
      }
    },
    "Material_Descriptor": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_SizeU8",
            "name": "dimensions_minus_1",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "pixel_data_ofs",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "palette_ofs",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_Descriptor"
        }
      }
    },
    "Material_Entry": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "pixel_format",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags_byte_1",
            "offset": 1,
            "doc": null
          },
          {
            "type": "Math_SizeU8",
            "name": "dimensions_minus_1",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "texture_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "palette_offset",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Math_SizeU16",
            "name": "dimensions",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "format",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "mipmap_count",
            "offset": 17,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "reserved",
            "offset": 18,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_Entry"
        }
      }
    },
    "Material_EntryFull": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_01",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "reserved_02",
            "offset": 2,
            "doc": null
          },
          {
            "type": "DDraw_IDirectDrawSurface7*",
            "name": "texture_data_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t*",
            "name": "palette_data_ptr",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Math_SizeU16",
            "name": "dimensions",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "format",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "reserved_03",
            "offset": 18,
            "doc": null
          },
          {
            "type": "DDraw_IDirectDrawSurface7*",
            "name": "d3d_texture",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "texture_handle",
            "offset": 24,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "ref_count",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved_04",
            "offset": 32,
            "doc": null
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Expanded/runtime material-entry form with the descriptor fields plus runtime DirectDraw/D3D texture handles.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_EntryFull"
        }
      }
    },
    "Material_FindTextureByFrame": {
      "function": {
        "analysis": {
          "en": {
            "address": 4382352,
            "rva": 188048,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 709,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 854,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 1117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 1221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4387360,
            "rva": 193056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 849,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 947,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1089,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1209,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1330,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1444,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4387328,
            "rva": 193024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 849,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 947,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1089,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1209,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1330,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1444,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "material_ref",
              "type": "Material_RefEntry*",
              "docs": "Material reference whose frame set is searched."
            },
            {
              "name": "frame_index",
              "type": "int32_t",
              "docs": "Requested animation/frame index."
            },
            {
              "name": "out_sprite",
              "type": "Graphics_SpriteContext**",
              "docs": "Receives the render sprite context; its texture descriptor is updated to the selected frame or frame-zero fallback."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4C 24 04 53 56 8B 41 08 57 85 C0 0F 84 ??",
          "match_offset": 0
        },
        "docs": "Finds the render texture for frameIndex in materialRef, falling back to frame zero when the requested frame is unavailable.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 396,
          "symbol_index": 396,
          "accessor": "DTTR_PCDOGS_F_Material_FindTextureByFrame",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_FIND_TEXTURE_BY_FRAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_FIND_TEXTURE_BY_FRAME"
        }
      }
    },
    "Material_FrameData": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "reserved_00",
            "offset": 0,
            "doc": "Set to zero by Material_BuildStructure before the frame record is copied; no documented consumer uses it."
          },
          {
            "type": "uint32_t",
            "name": "reserved_04",
            "offset": 4,
            "doc": "Set to zero by Material_BuildStructure before the frame record is copied; no documented consumer uses it."
          },
          {
            "type": "uint32_t",
            "name": "reserved_08",
            "offset": 8,
            "doc": "Set to zero by Material_BuildStructure before the frame record is copied; no documented consumer uses it."
          },
          {
            "type": "uint32_t",
            "name": "material_node_ref_packed",
            "offset": 12,
            "doc": "Packed material-node reference written by Material_BuildStructure and masked by Material_FindTextureByFrame to index material nodes."
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_FrameData"
        }
      }
    },
    "Material_FrameSet": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "reserved_00",
            "offset": 0,
            "doc": "Initialized frame-set header word used near the frame count and frame pointer array fields."
          },
          {
            "type": "int16_t",
            "name": "frame_count",
            "offset": 2,
            "doc": "Number of frame pointers used by Material_FindTextureByFrame to bound frame_ptr_array iteration."
          },
          {
            "type": "Material_FrameData**",
            "name": "frame_ptr_array",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Material animation frame-set header, built for Material_FindTextureByFrame lookups.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_FrameSet"
        }
      }
    },
    "Material_GetDataTextureRefs": {
      "function": {
        "analysis": {
          "en": {
            "address": 4442784,
            "rva": 248480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 688,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4447936,
            "rva": 253632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 688,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4447904,
            "rva": 253600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 688,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "data_ref_out",
              "type": "int32_t*",
              "docs": "Three-word output copied from the shared global texture reference block."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 85 C9 74 ?? 8B 44 24 04 89",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 505,
          "symbol_index": 505,
          "accessor": "DTTR_PCDOGS_F_Material_GetDataTextureRefs",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_GET_DATA_TEXTURE_REFS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_GET_DATA_TEXTURE_REFS"
        }
      }
    },
    "Material_LoadAllEntries": {
      "function": {
        "analysis": {
          "en": {
            "address": 4450960,
            "rva": 256656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_PropagateAlphaFlags"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4456240,
            "rva": 261936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_PropagateAlphaFlags"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4456208,
            "rva": 261904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadTexture"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_PropagateAlphaFlags"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "material_table",
              "type": "Material_Table*",
              "docs": "Material table whose fixed-up Material_SectionHeader and entry records are walked for upload/runtime initialization."
            },
            {
              "name": "texture_base_addr",
              "type": "int32_t",
              "docs": "Base added to texture/palette positions before surfaces are loaded or shared."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "03 C2 89 46 08 57 E8 ??",
          "match_offset": -67
        },
        "docs": "Walks materialEntryCount records, rebases texture/palette data, resolves shared references, uploads runtime surfaces, and honors the entry flag 0x80 path.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 535,
          "symbol_index": 535,
          "accessor": "DTTR_PCDOGS_F_Material_LoadAllEntries",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_LOAD_ALL_ENTRIES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_LOAD_ALL_ENTRIES"
        }
      }
    },
    "Material_LoadAndFixup": {
      "function": {
        "analysis": {
          "en": {
            "address": 4442640,
            "rva": 248336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 241,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4447792,
            "rva": 253488,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 505,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 469,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4447760,
            "rva": 253456,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 505,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "material_section",
              "type": "Material_SectionHeader*",
              "docs": "Material section header whose node/material-entry positions are rebased in-place before loading."
            },
            {
              "name": "texture_base_addr",
              "type": "int32_t",
              "docs": "Base passed through to the material loading path after section fixups."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4C 24 10 51 50 E8 ??",
          "match_offset": -116
        },
        "docs": "Rebases the material section header, fixes material-entry frame and node table pointers in-place, then hands the fixed-up section to the material loading path.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 504,
          "symbol_index": 504,
          "accessor": "DTTR_PCDOGS_F_Material_LoadAndFixup",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_LOAD_AND_FIXUP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_LOAD_AND_FIXUP"
        }
      }
    },
    "Material_LoadTexture": {
      "function": {
        "analysis": {
          "en": {
            "address": 4278368,
            "rva": 84064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 920,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 948,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 1231,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4278848,
            "rva": 84544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 920,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 948,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 1231,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4278848,
            "rva": 84544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 920,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CreateTextureSurface"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 948,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_CopyPixelDataToTexture"
                },
                "instr_offset": 1231,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "material_entry",
              "type": "Material_TableEntry*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "B8 48 00 08 00 E8 ??",
          "match_offset": 0
        },
        "docs": "Loads a material table entry's runtime descriptor into DirectDraw texture surfaces. The SDK exposes this as a cdecl void function.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 193,
          "symbol_index": 193,
          "accessor": "DTTR_PCDOGS_F_Material_LoadTexture",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_LOAD_TEXTURE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_LOAD_TEXTURE"
        }
      }
    },
    "Material_MarkReferencedByParent": {
      "function": {
        "analysis": {
          "en": {
            "address": 4450704,
            "rva": 256400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_PropagateAlphaFlags"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4455984,
            "rva": 261680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_PropagateAlphaFlags"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4455952,
            "rva": 261648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_PropagateAlphaFlags"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "material_table",
              "type": "Material_Table*"
            },
            {
              "name": "entry",
              "type": "Material_TableEntry*"
            },
            {
              "name": "parent_texture_ref",
              "type": "int32_t"
            },
            {
              "name": "entry_count",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "40 02 40 75 ?? 3B E9 ??",
          "match_offset": -40
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 533,
          "symbol_index": 533,
          "accessor": "DTTR_PCDOGS_F_Material_MarkReferencedByParent",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_MARK_REFERENCED_BY_PARENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_MARK_REFERENCED_BY_PARENT"
        }
      }
    },
    "Material_NodeRef": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "material_index",
            "offset": 0,
            "doc": null
          },
          {
            "type": "DDraw_IDirectDrawSurface7*",
            "name": "texture_surface",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t*",
            "name": "palette_ptr",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "frame_index",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "blend_mode",
            "offset": 14,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "runtime_flags",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_NodeRef"
        }
      }
    },
    "Material_PropagateAlphaFlags": {
      "function": {
        "analysis": {
          "en": {
            "address": 4450800,
            "rva": 256496,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_MarkReferencedByParent"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4456080,
            "rva": 261776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_MarkReferencedByParent"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4456048,
            "rva": 261744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_MarkReferencedByParent"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_LoadAllEntries"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "material_table",
              "type": "Material_Table*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 16 51 50 52 57 E8 ??",
          "match_offset": -114
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 534,
          "symbol_index": 534,
          "accessor": "DTTR_PCDOGS_F_Material_PropagateAlphaFlags",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_PROPAGATE_ALPHA_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_PROPAGATE_ALPHA_FLAGS"
        }
      }
    },
    "Material_RefEntry": {
      "type": {
        "members": [
          {
            "type": "Material_SectionHeader*",
            "name": "material_section",
            "offset": 0,
            "doc": "Material section pointer written by Material_BuildStructure and read by Material_FindTextureByFrame."
          },
          {
            "type": "Material_TableEntry*",
            "name": "material_table_entry",
            "offset": 4,
            "doc": "Material table entry pointer written by Material_BuildStructure."
          },
          {
            "type": "Material_FrameSet*",
            "name": "frame_set",
            "offset": 8,
            "doc": "Optional frame-set table written by Material_BuildStructure and searched by Material_FindTextureByFrame."
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_RefEntry"
        }
      }
    },
    "Material_ReleaseSingleTexture": {
      "function": {
        "analysis": {
          "en": {
            "address": 4274912,
            "rva": 80608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4275392,
            "rva": 81088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4275392,
            "rva": 81088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t",
          "params": [
            {
              "name": "texture_surface",
              "type": "DDraw_IDirectDrawSurface7*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 48 A3",
          "match_offset": 0
        },
        "docs": "Decrements active texture count and returns the DirectDraw surface Release result.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 187,
          "symbol_index": 187,
          "accessor": "DTTR_PCDOGS_F_Material_ReleaseSingleTexture",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_RELEASE_SINGLE_TEXTURE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_RELEASE_SINGLE_TEXTURE"
        }
      }
    },
    "Material_ReleaseTextureArray": {
      "function": {
        "analysis": {
          "en": {
            "address": 4274752,
            "rva": 80448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_CurrentBoundTextureSurface"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_D3DDevice7"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_ReleaseTextureArray_GraphicsActiveTextureCount"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ClearTextureCache"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4275232,
            "rva": 80928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_CurrentBoundTextureSurface"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_D3DDevice7"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_ReleaseTextureArray_GraphicsActiveTextureCount"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ClearTextureCache"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4275232,
            "rva": 80928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_CurrentBoundTextureSurface"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_D3DDevice7"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Material_ReleaseTextureArray_GraphicsActiveTextureCount"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ClearTextureCache"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "HRESULT",
          "params": [
            {
              "name": "texture_handles",
              "type": "DDraw_IDirectDrawSurface7**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Material_ReleaseTextureArray_GraphicsActiveTextureCount"
            },
            "instr_offset": 23,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_CurrentBoundTextureSurface"
            },
            "instr_offset": 48,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_D3DDevice7"
            },
            "instr_offset": 59,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "06 00 00 00 00 8B 0D ??",
          "match_offset": -18
        },
        "docs": "Releases up to 25 cached DirectDraw texture surfaces and clears the bound texture if needed.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 185,
          "symbol_index": 185,
          "accessor": "DTTR_PCDOGS_F_Material_ReleaseTextureArray",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATERIAL_RELEASE_TEXTURE_ARRAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATERIAL_RELEASE_TEXTURE_ARRAY"
        }
      }
    },
    "Material_ReleaseTextureArray_GraphicsActiveTextureCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4556440,
            "rva": 362136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4564776,
            "rva": 370472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4564760,
            "rva": 370456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Material_ReleaseTextureArray"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Material_ReleaseTextureArray"
            },
            "instr_offset": 23,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Material_ReleaseTextureArray",
          "instr_offset": 23,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "sdk": {
          "id": 434,
          "symbol_index": 434,
          "accessor": "DTTR_PCDOGS_D_Material_ReleaseTextureArray_GraphicsActiveTextureCount",
          "sdk_id": "DTTR_PCDOGS_DATA_MATERIAL_RELEASE_TEXTURE_ARRAY_GRAPHICS_ACTIVE_TEXTURE_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATERIAL_RELEASE_TEXTURE_ARRAY_GRAPHICS_ACTIVE_TEXTURE_COUNT"
        }
      }
    },
    "Material_RuntimeDescriptor": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_SizeU8",
            "name": "dimensions_minus_1",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t*",
            "name": "pixel_data",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint16_t*",
            "name": "palette",
            "offset": 8,
            "doc": null
          },
          {
            "type": "DDraw_IDirectDrawSurface7*",
            "name": "texture_handles[25]",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "average_transparent_color",
            "offset": 112,
            "doc": "Packed average RGB fill color for transparent or black pixels. Material_LoadTexture resets it to 0xffffffff, and Material_CopyPixelDataToTexture substitutes the computed average RGB when alpha processing sees fully black pixels."
          }
        ],
        "size": 116,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_RuntimeDescriptor"
        }
      }
    },
    "Material_SectionHeader": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "node_table_offset",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved_04",
            "offset": 4,
            "doc": "Reserved material section header word used near the count and pointer fields consumed by material fixup and loading paths."
          },
          {
            "type": "uint32_t",
            "name": "reserved_08",
            "offset": 8,
            "doc": "Reserved material section header word; material loading and fixup has no documented consumer for it."
          },
          {
            "type": "uint32_t",
            "name": "material_entries_offset",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "node_count",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "material_entry_count",
            "offset": 18,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved_14",
            "offset": 20,
            "doc": "Reserved material section header tail word following materialEntryCount."
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "On-disk material section header, rebased before Material_LoadAllEntries walks node/material tables.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_SectionHeader"
        }
      }
    },
    "Material_SetRuntime": {
      "type": {
        "members": [
          {
            "type": "Material_Entry*",
            "name": "entries",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "count",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "reserved_06",
            "offset": 6,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Material_FrameData*",
            "name": "material_data_array",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved_10",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_SetRuntime"
        }
      }
    },
    "Material_State": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_id",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Math_SizeU8",
            "name": "actual_dimensions",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "padding",
            "offset": 10,
            "doc": null
          },
          {
            "type": "DDraw_IDirectDrawSurface7*",
            "name": "texture_handles[4]",
            "offset": 12,
            "doc": null
          },
          {
            "type": "DDraw_IDirectDrawSurface7*",
            "name": "backface_handles[4]",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "ambient_color",
            "offset": 44,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "diffuse_color",
            "offset": 48,
            "doc": null
          }
        ],
        "size": 52,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_State"
        }
      }
    },
    "Material_Table": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "node_table_offset",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved_04",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved_08",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_entries_offset",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "node_count",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "material_entry_count",
            "offset": 18,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved_14",
            "offset": 20,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Material section header: node-table and material-entry offsets with their counts.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_Table"
        }
      }
    },
    "Material_TableEntry": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags_bytes[2]",
            "offset": 2,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "material_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "avg_color",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Material_TextureInfo",
            "name": "texture_info",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_UV8",
            "name": "uv_tile_offset",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "texture_info_hi_reserved[2]",
            "offset": 18,
            "doc": null
          },
          {
            "type": "Math_ColorRGB8",
            "name": "color_adjust",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved_17",
            "offset": 23,
            "doc": null
          },
          {
            "type": "Material_TableEntry*",
            "name": "next_material_entry",
            "offset": 24,
            "doc": null
          },
          {
            "type": "Math_UV8",
            "name": "explicit_uvs[4]",
            "offset": 28,
            "doc": null
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_TableEntry"
        }
      }
    },
    "Material_TextureHashEntry": {
      "type": {
        "members": [
          {
            "type": "Material_Entry*",
            "name": "material_entry_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_SizeI16",
            "name": "dimensions",
            "offset": 4,
            "doc": null
          },
          {
            "type": "DDraw_IDirectDrawSurface7*",
            "name": "texture_data",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Animation_FrameData*",
            "name": "anim_frame_data",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_TextureHashEntry"
        }
      }
    },
    "Material_TextureInfo": {
      "type": {
        "members": [
          {
            "type": "Math_SizeU8",
            "name": "dimensions",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "reserved[2]",
            "offset": 2,
            "doc": "Upper bytes of the packed texture-info word. No named read path uses these bits."
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Material_TextureInfo"
        }
      }
    },
    "Math_BoundingSphereU16": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "y",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "z",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "radius",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_BoundingSphereU16"
        }
      }
    },
    "Math_BoundsVector": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I32",
            "name": "bounds_vec",
            "offset": 0,
            "doc": "Single bounds/corner vector record."
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Single-corner bounds vector record with a vector footprint.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_BoundsVector"
        }
      }
    },
    "Math_BuildMatrixRotationXY": {
      "function": {
        "analysis": {
          "en": {
            "address": 4383488,
            "rva": 189184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationXY_FixedOneScratch1"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationXY_FixedOneScratch2"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationXY_FixedOneShort"
                },
                "instr_offset": 126,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_UpdateJointTracking"
                },
                "instr_offset": 1901,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateHomingVelocity"
                },
                "instr_offset": 484,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SetVelocityFromDirection"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 550,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4388496,
            "rva": 194192,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationXY_FixedOneScratch1"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationXY_FixedOneScratch2"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationXY_FixedOneShort"
                },
                "instr_offset": 126,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_UpdateJointTracking"
                },
                "instr_offset": 1901,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateHomingVelocity"
                },
                "instr_offset": 484,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SetVelocityFromDirection"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 550,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4388464,
            "rva": 194160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationXY_FixedOneScratch1"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationXY_FixedOneScratch2"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationXY_FixedOneShort"
                },
                "instr_offset": 126,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_UpdateJointTracking"
                },
                "instr_offset": 1901,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 911,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateHomingVelocity"
                },
                "instr_offset": 484,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SetVelocityFromDirection"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 550,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "out_matrix",
              "type": "Math_Matrix3x3I16*"
            },
            {
              "name": "post_multiply",
              "type": "Math_Matrix3x3I16*"
            },
            {
              "name": "angle_x",
              "type": "int32_t"
            },
            {
              "name": "angle_y",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildMatrixRotationXY_FixedOneScratch1"
            },
            "instr_offset": 164,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildMatrixRotationXY_FixedOneScratch2"
            },
            "instr_offset": 119,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildMatrixRotationXY_FixedOneShort"
            },
            "instr_offset": 126,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "7C ?? 2C 2B C7 50 E8 ??",
          "match_offset": -11
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 398,
          "symbol_index": 398,
          "accessor": "DTTR_PCDOGS_F_Math_BuildMatrixRotationXY",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_BUILD_MATRIX_ROTATION_XY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_BUILD_MATRIX_ROTATION_XY"
        }
      }
    },
    "Math_BuildMatrixRotationXY_FixedOneScratch1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525920,
            "rva": 331616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534104,
            "rva": 339800,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534104,
            "rva": 339800,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildMatrixRotationXY"
            },
            "instr_offset": 164,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Fixed-point one constant/local slot used by the XY rotation matrix builder; suffix disambiguates the repeated constant reference.",
        "sdk": {
          "id": 225,
          "symbol_index": 225,
          "accessor": "DTTR_PCDOGS_D_Math_BuildMatrixRotationXY_FixedOneScratch1",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_MATRIX_ROTATION_XY_FIXED_ONE_SCRATCH1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_MATRIX_ROTATION_XY_FIXED_ONE_SCRATCH1"
        }
      }
    },
    "Math_BuildMatrixRotationXY_FixedOneScratch2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525928,
            "rva": 331624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534112,
            "rva": 339808,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534112,
            "rva": 339808,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 119,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildMatrixRotationXY"
            },
            "instr_offset": 119,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Second fixed-point one constant/local slot used by the XY rotation matrix builder; suffix disambiguates the repeated constant reference.",
        "sdk": {
          "id": 227,
          "symbol_index": 227,
          "accessor": "DTTR_PCDOGS_D_Math_BuildMatrixRotationXY_FixedOneScratch2",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_MATRIX_ROTATION_XY_FIXED_ONE_SCRATCH2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_MATRIX_ROTATION_XY_FIXED_ONE_SCRATCH2"
        }
      }
    },
    "Math_BuildMatrixRotationXY_FixedOneShort": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525936,
            "rva": 331632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 126,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534120,
            "rva": 339816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 126,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534120,
            "rva": 339816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationXY"
                },
                "instr_offset": 126,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildMatrixRotationXY"
            },
            "instr_offset": 126,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 229,
          "symbol_index": 229,
          "accessor": "DTTR_PCDOGS_D_Math_BuildMatrixRotationXY_FixedOneShort",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_MATRIX_ROTATION_XY_FIXED_ONE_SHORT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_MATRIX_ROTATION_XY_FIXED_ONE_SHORT"
        }
      }
    },
    "Math_BuildMatrixRotationY": {
      "function": {
        "analysis": {
          "en": {
            "address": 4383184,
            "rva": 188880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedOne3"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedOne4"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedOneShort2"
                },
                "instr_offset": 57,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedZero3"
                },
                "instr_offset": 38,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedZero4"
                },
                "instr_offset": 65,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateRotationFromVelocity"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SetVelocityFromDirection"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4388192,
            "rva": 193888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedOne3"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedOne4"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedOneShort2"
                },
                "instr_offset": 57,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedZero3"
                },
                "instr_offset": 38,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedZero4"
                },
                "instr_offset": 65,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateRotationFromVelocity"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SetVelocityFromDirection"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4388160,
            "rva": 193856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedOne3"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedOne4"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedOneShort2"
                },
                "instr_offset": 57,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedZero3"
                },
                "instr_offset": 38,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildMatrixRotationY_FixedZero4"
                },
                "instr_offset": 65,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateRotationFromVelocity"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SetVelocityFromDirection"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Math_Matrix3x3I16*",
          "params": [
            {
              "name": "out_matrix",
              "type": "Math_Matrix3x3I16*",
              "docs": "Receives the Y-axis rotation matrix."
            },
            {
              "name": "post_multiply",
              "type": "Math_Matrix3x3I16*",
              "docs": "Optional matrix multiplied after the Y rotation."
            },
            {
              "name": "angle_y",
              "type": "int32_t",
              "docs": "Y angle in the game's 0x1000-turn sine-table domain."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildMatrixRotationY_FixedOne3"
            },
            "instr_offset": 50,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildMatrixRotationY_FixedZero3"
            },
            "instr_offset": 38,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildMatrixRotationY_FixedOne4"
            },
            "instr_offset": 118,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildMatrixRotationY_FixedZero4"
            },
            "instr_offset": 65,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildMatrixRotationY_FixedOneShort2"
            },
            "instr_offset": 57,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? C1 F8 02 83 C4 08 8B",
          "match_offset": -29
        },
        "docs": "Builds a signed Q12 Y-axis 3x3 rotation matrix, optionally post-multiplied by post_multiply.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 397,
          "symbol_index": 397,
          "accessor": "DTTR_PCDOGS_F_Math_BuildMatrixRotationY",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_BUILD_MATRIX_ROTATION_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_BUILD_MATRIX_ROTATION_Y"
        }
      }
    },
    "Math_BuildMatrixRotationY_FixedOne3": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525944,
            "rva": 331640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534128,
            "rva": 339824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534128,
            "rva": 339824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildMatrixRotationY"
            },
            "instr_offset": 50,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 230,
          "symbol_index": 230,
          "accessor": "DTTR_PCDOGS_D_Math_BuildMatrixRotationY_FixedOne3",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_MATRIX_ROTATION_Y_FIXED_ONE3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_MATRIX_ROTATION_Y_FIXED_ONE3"
        }
      }
    },
    "Math_BuildMatrixRotationY_FixedOne4": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525952,
            "rva": 331648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534136,
            "rva": 339832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534136,
            "rva": 339832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildMatrixRotationY"
            },
            "instr_offset": 118,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 232,
          "symbol_index": 232,
          "accessor": "DTTR_PCDOGS_D_Math_BuildMatrixRotationY_FixedOne4",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_MATRIX_ROTATION_Y_FIXED_ONE4",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_MATRIX_ROTATION_Y_FIXED_ONE4"
        }
      }
    },
    "Math_BuildMatrixRotationY_FixedOneShort2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525960,
            "rva": 331656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 57,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534144,
            "rva": 339840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 57,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534144,
            "rva": 339840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 57,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildMatrixRotationY"
            },
            "instr_offset": 57,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 234,
          "symbol_index": 234,
          "accessor": "DTTR_PCDOGS_D_Math_BuildMatrixRotationY_FixedOneShort2",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_MATRIX_ROTATION_Y_FIXED_ONE_SHORT2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_MATRIX_ROTATION_Y_FIXED_ONE_SHORT2"
        }
      }
    },
    "Math_BuildMatrixRotationY_FixedZero3": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525948,
            "rva": 331644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 38,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534132,
            "rva": 339828,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 38,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534132,
            "rva": 339828,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 38,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildMatrixRotationY"
            },
            "instr_offset": 38,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 231,
          "symbol_index": 231,
          "accessor": "DTTR_PCDOGS_D_Math_BuildMatrixRotationY_FixedZero3",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_MATRIX_ROTATION_Y_FIXED_ZERO3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_MATRIX_ROTATION_Y_FIXED_ZERO3"
        }
      }
    },
    "Math_BuildMatrixRotationY_FixedZero4": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525956,
            "rva": 331652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 65,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534140,
            "rva": 339836,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 65,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534140,
            "rva": 339836,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 65,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildMatrixRotationY"
            },
            "instr_offset": 65,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 233,
          "symbol_index": 233,
          "accessor": "DTTR_PCDOGS_D_Math_BuildMatrixRotationY_FixedZero4",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_MATRIX_ROTATION_Y_FIXED_ZERO4",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_MATRIX_ROTATION_Y_FIXED_ZERO4"
        }
      }
    },
    "Math_BuildQuaternionFromMatrix": {
      "function": {
        "analysis": {
          "en": {
            "address": 4458768,
            "rva": 264464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateIntegerSquareRoot"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateIntegerSquareRoot"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 720,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4464320,
            "rva": 270016,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateIntegerSquareRoot"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateIntegerSquareRoot"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 720,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4464336,
            "rva": 270032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateIntegerSquareRoot"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateIntegerSquareRoot"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 720,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "matrix",
              "type": "Math_Matrix3x3I16*",
              "docs": "Input row-major signed fixed-point 3x3 rotation matrix."
            },
            {
              "name": "out_quat",
              "type": "Math_QuaternionI16*",
              "docs": "Receives the converted Q14 quaternion as w/x/y/z."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "DF 03 C3 85 C0 0F 8E ??",
          "match_offset": -33
        },
        "docs": "Converts a 3x3 fixed-point rotation matrix to a Q14 quaternion using the trace-positive path or largest-diagonal fallback.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 582,
          "symbol_index": 582,
          "accessor": "DTTR_PCDOGS_F_Math_BuildQuaternionFromMatrix",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_BUILD_QUATERNION_FROM_MATRIX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_BUILD_QUATERNION_FROM_MATRIX"
        }
      }
    },
    "Math_BuildRotationFromVectors": {
      "function": {
        "analysis": {
          "en": {
            "address": 4459232,
            "rva": 264928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 563,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4464784,
            "rva": 270480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 563,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4464800,
            "rva": 270496,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 563,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "up_vector",
              "type": "Math_Vec3I16*",
              "docs": "First normalized signed fixed-point vector."
            },
            {
              "name": "forward_vector",
              "type": "Math_Vec3I16*",
              "docs": "Second normalized signed fixed-point vector."
            },
            {
              "name": "out_matrix",
              "type": "Math_Matrix3x3I16*",
              "docs": "Receives the rotation matrix mapping up_vector toward forward_vector."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF FF 89 55 0C 0F 8F ??",
          "match_offset": -86
        },
        "docs": "Builds a Q12 rotation matrix from two 3-component vectors; emits a neutral matrix for near-equal vectors and a 180-degree fallback for opposing vectors.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 583,
          "symbol_index": 583,
          "accessor": "DTTR_PCDOGS_F_Math_BuildRotationFromVectors",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_BUILD_ROTATION_FROM_VECTORS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_BUILD_ROTATION_FROM_VECTORS"
        }
      }
    },
    "Math_BuildRotationMatrix": {
      "function": {
        "analysis": {
          "en": {
            "address": 4383712,
            "rva": 189408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedOne5"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedOne6"
                },
                "instr_offset": 326,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedZero1"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedZero2"
                },
                "instr_offset": 117,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 402,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4388720,
            "rva": 194416,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedOne5"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedOne6"
                },
                "instr_offset": 326,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedZero1"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedZero2"
                },
                "instr_offset": 117,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 402,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4388688,
            "rva": 194384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedOne5"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedOne6"
                },
                "instr_offset": 326,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedZero1"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Math_BuildRotationMatrix_FixedZero2"
                },
                "instr_offset": 117,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 402,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "out_matrix",
              "type": "Math_Matrix3x3I16*"
            },
            {
              "name": "post_multiply",
              "type": "Math_Matrix3x3I16*"
            },
            {
              "name": "angle_x",
              "type": "int32_t"
            },
            {
              "name": "angle_y",
              "type": "int32_t"
            },
            {
              "name": "angle_z",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildRotationMatrix_FixedZero1"
            },
            "instr_offset": 102,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildRotationMatrix_FixedZero2"
            },
            "instr_offset": 117,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildRotationMatrix_FixedOne5"
            },
            "instr_offset": 304,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Math_BuildRotationMatrix_FixedOne6"
            },
            "instr_offset": 326,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "7C ?? 3C 2B C7 50 E8 ??",
          "match_offset": -11
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 399,
          "symbol_index": 399,
          "accessor": "DTTR_PCDOGS_F_Math_BuildRotationMatrix",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_BUILD_ROTATION_MATRIX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_BUILD_ROTATION_MATRIX"
        }
      }
    },
    "Math_BuildRotationMatrixDirect": {
      "function": {
        "analysis": {
          "en": {
            "address": 4384064,
            "rva": 189760,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 346,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4389072,
            "rva": 194768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 346,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4389040,
            "rva": 194736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 346,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "out_matrix",
              "type": "Math_Matrix3x3I16*",
              "docs": "Receives the combined X/Y/Z rotation matrix."
            },
            {
              "name": "post_multiply",
              "type": "Math_Matrix3x3I16*",
              "docs": "Optional matrix composed before the rotations."
            },
            {
              "name": "sin_x",
              "type": "int32_t",
              "docs": "Precomputed X sine in signed Q12/Q14 table form; low word is stored into the X rotation template."
            },
            {
              "name": "cos_x",
              "type": "int16_t",
              "docs": "Precomputed X cosine stored into the X rotation template."
            },
            {
              "name": "sin_y",
              "type": "int32_t",
              "docs": "Precomputed Y sine in signed Q12/Q14 table form; low word is stored into the Y rotation template."
            },
            {
              "name": "cos_y",
              "type": "int16_t",
              "docs": "Precomputed Y cosine stored into the Y rotation template."
            },
            {
              "name": "angle_z",
              "type": "int32_t",
              "docs": "Z angle in the game's 0x1000-turn sine-table domain; zero skips the final Z multiply."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 0C 8B 4C 24 10 66 A3 ??",
          "match_offset": 0
        },
        "docs": "Builds a signed Q12 3x3 rotation matrix from precomputed X/Y sine/cosine inputs and a Z angle.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 400,
          "symbol_index": 400,
          "accessor": "DTTR_PCDOGS_F_Math_BuildRotationMatrixDirect",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_BUILD_ROTATION_MATRIX_DIRECT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_BUILD_ROTATION_MATRIX_DIRECT"
        }
      }
    },
    "Math_BuildRotationMatrix_FixedOne5": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525968,
            "rva": 331664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534152,
            "rva": 339848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534152,
            "rva": 339848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildRotationMatrix"
            },
            "instr_offset": 304,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 235,
          "symbol_index": 235,
          "accessor": "DTTR_PCDOGS_D_Math_BuildRotationMatrix_FixedOne5",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_ROTATION_MATRIX_FIXED_ONE5",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_ROTATION_MATRIX_FIXED_ONE5"
        }
      }
    },
    "Math_BuildRotationMatrix_FixedOne6": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525976,
            "rva": 331672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 326,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534160,
            "rva": 339856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 326,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534160,
            "rva": 339856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 326,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildRotationMatrix"
            },
            "instr_offset": 326,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 236,
          "symbol_index": 236,
          "accessor": "DTTR_PCDOGS_D_Math_BuildRotationMatrix_FixedOne6",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_ROTATION_MATRIX_FIXED_ONE6",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_ROTATION_MATRIX_FIXED_ONE6"
        }
      }
    },
    "Math_BuildRotationMatrix_FixedZero1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525924,
            "rva": 331620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534108,
            "rva": 339804,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534108,
            "rva": 339804,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildRotationMatrix"
            },
            "instr_offset": 102,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 226,
          "symbol_index": 226,
          "accessor": "DTTR_PCDOGS_D_Math_BuildRotationMatrix_FixedZero1",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_ROTATION_MATRIX_FIXED_ZERO1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_ROTATION_MATRIX_FIXED_ZERO1"
        }
      }
    },
    "Math_BuildRotationMatrix_FixedZero2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525932,
            "rva": 331628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 117,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534116,
            "rva": 339812,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 117,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534116,
            "rva": 339812,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 117,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_BuildRotationMatrix"
            },
            "instr_offset": 117,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 228,
          "symbol_index": 228,
          "accessor": "DTTR_PCDOGS_D_Math_BuildRotationMatrix_FixedZero2",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_BUILD_ROTATION_MATRIX_FIXED_ZERO2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_BUILD_ROTATION_MATRIX_FIXED_ZERO2"
        }
      }
    },
    "Math_CalculateDistance3DFP12": {
      "function": {
        "analysis": {
          "en": {
            "address": 4345744,
            "rva": 151440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 2141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 644,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_CalculateSpatialVolumeAndPan"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 415,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 604,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyMovingPlatformForce"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1427,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4347680,
            "rva": 153376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 2141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 681,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_CalculateSpatialVolumeAndPan"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 415,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 604,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyMovingPlatformForce"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1427,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4347680,
            "rva": 153376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 2141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationAndVisibility"
                },
                "instr_offset": 681,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_CalculateSpatialVolumeAndPan"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectObjectNodeCollisions"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 415,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 604,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyMovingPlatformForce"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1427,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "dx",
              "type": "int32_t"
            },
            {
              "name": "dy",
              "type": "int32_t"
            },
            {
              "name": "dz",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4C 24 04 85 C9 7D ?? F7 D9 8B 44 24 08 85 C0",
          "match_offset": 0
        },
        "docs": "Returns a fast weighted approximation of 3D distance from absolute dx/dy/dz components.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 284,
          "symbol_index": 284,
          "accessor": "DTTR_PCDOGS_F_Math_CalculateDistance3DFP12",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_CALCULATE_DISTANCE3_DFP12",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_CALCULATE_DISTANCE3_DFP12"
        }
      }
    },
    "Math_CalculateFaceNormal": {
      "function": {
        "analysis": {
          "en": {
            "address": 4283936,
            "rva": 89632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 411,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4284432,
            "rva": 90128,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 411,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4284432,
            "rva": 90128,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 331,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_SetupClipPlanes"
                },
                "instr_offset": 411,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "float*",
          "params": [
            {
              "name": "out_normal",
              "type": "float*"
            },
            {
              "name": "point_0",
              "type": "float*"
            },
            {
              "name": "point_1",
              "type": "float*"
            },
            {
              "name": "point_2",
              "type": "float*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "44 24 14 D8 CB DE E9 ??",
          "match_offset": -62
        },
        "docs": "Computes and normalizes the face normal from three 3D points, writes it to outNormal, and returns outNormal.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 202,
          "symbol_index": 202,
          "accessor": "DTTR_PCDOGS_F_Math_CalculateFaceNormal",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_CALCULATE_FACE_NORMAL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_CALCULATE_FACE_NORMAL"
        }
      }
    },
    "Math_CalculateFixedSqrt22": {
      "function": {
        "analysis": {
          "en": {
            "address": 4345888,
            "rva": 151584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 1313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 1135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_UpdateJointTracking"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 531,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 822,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 1113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 1205,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3589,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 689,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_RecomputePitchYawFromEyeTarget"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 418,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1212,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 801,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 6275,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateHomingVelocity"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_TrackTarget"
                },
                "instr_offset": 231,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 1641,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 462,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 1548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 1777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 2267,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 2494,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 662,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationFromVectors"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 627,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1063,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 718,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1660,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyGroundReaction"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyMovingPlatformForce"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1888,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 2503,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 2560,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ProcessActorCollision"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 784,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 311,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 916,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1146,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1781,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1845,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 2035,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 2202,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4347824,
            "rva": 153520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 1313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 1135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_UpdateJointTracking"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 531,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 822,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 1113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 1205,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3589,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 689,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_RecomputePitchYawFromEyeTarget"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 418,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1212,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 801,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 6275,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateHomingVelocity"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_TrackTarget"
                },
                "instr_offset": 231,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 1641,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 462,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 1548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 1777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 2267,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 2494,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 942,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 662,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationFromVectors"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 627,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1063,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 718,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1660,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyGroundReaction"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyMovingPlatformForce"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1888,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 2503,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 2560,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ProcessActorCollision"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 784,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 311,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 916,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1146,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1784,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1848,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 2038,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 2205,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4347824,
            "rva": 153520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ApplySplineMovement"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 868,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 1016,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 1313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_ComputeNormalsPostTransform"
                },
                "instr_offset": 1135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Bone_UpdateJointTracking"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 531,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 822,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_BuildViewMatrix"
                },
                "instr_offset": 1113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 1205,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3589,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 594,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_InterpolateTransition"
                },
                "instr_offset": 689,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_RecomputePitchYawFromEyeTarget"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 418,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 1212,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFromDefinition"
                },
                "instr_offset": 801,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_BuildWallCollisionPlane"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorObstacles"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectAndResolve3DCollision"
                },
                "instr_offset": 6275,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateHomingVelocity"
                },
                "instr_offset": 393,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_TrackTarget"
                },
                "instr_offset": 231,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 1641,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_UpdateProjectileLogic"
                },
                "instr_offset": 462,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 1548,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 1777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 2267,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 2494,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 958,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 942,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 662,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildRotationFromVectors"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 627,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1063,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 718,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1660,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyGroundReaction"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ApplyMovingPlatformForce"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1888,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 2503,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 2560,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ProcessActorCollision"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 784,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 311,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 916,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1146,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1784,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1848,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 2038,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 2205,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "value",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 57 33 C9 33 C0 BF 16 ?? ?? ??",
          "match_offset": 0
        },
        "docs": "Fixed-point square-root helper (22-iteration shift-subtract loop) used by geometry normalization paths.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 285,
          "symbol_index": 285,
          "accessor": "DTTR_PCDOGS_F_Math_CalculateFixedSqrt22",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_CALCULATE_FIXED_SQRT22",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_CALCULATE_FIXED_SQRT22"
        }
      }
    },
    "Math_CalculateIntegerSquareRoot": {
      "function": {
        "analysis": {
          "en": {
            "address": 4345936,
            "rva": 151632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 374,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4347872,
            "rva": 153568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 374,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4347872,
            "rva": 153568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuaternionSlerp"
                },
                "instr_offset": 374,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "value",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 57 33 C9 33 C0 BF 17 ?? ?? ??",
          "match_offset": 0
        },
        "docs": "Integer square-root helper.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 286,
          "symbol_index": 286,
          "accessor": "DTTR_PCDOGS_F_Math_CalculateIntegerSquareRoot",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_CALCULATE_INTEGER_SQUARE_ROOT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_CALCULATE_INTEGER_SQUARE_ROOT"
        }
      }
    },
    "Math_CalculateTriangleHeight": {
      "function": {
        "analysis": {
          "en": {
            "address": 4348992,
            "rva": 154688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 1399,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4350928,
            "rva": 156624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 1399,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4350928,
            "rva": 156624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 1399,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "local_x_fp12",
              "type": "int32_t"
            },
            {
              "name": "local_z_fp12",
              "type": "int32_t"
            },
            {
              "name": "tri_a",
              "type": "Collision_Vertex*"
            },
            {
              "name": "tri_b",
              "type": "Collision_Vertex*"
            },
            {
              "name": "tri_c",
              "type": "Collision_Vertex*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "2C 66 8B 42 02 D8 0D ?? ?? ?? ??",
          "match_offset": -105
        },
        "docs": "Solves the triangle-plane local Y value for fixed-point local X/Z. Falls back to the highest vertex Y when the projected triangle area is zero.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 291,
          "symbol_index": 291,
          "accessor": "DTTR_PCDOGS_F_Math_CalculateTriangleHeight",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_CALCULATE_TRIANGLE_HEIGHT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_CALCULATE_TRIANGLE_HEIGHT"
        }
      }
    },
    "Math_ColorBGRA8": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "b",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "g",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "r",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "a",
            "offset": 3,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_ColorBGRA8"
        }
      }
    },
    "Math_ColorRGB8": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "r",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "g",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "b",
            "offset": 2,
            "doc": null
          }
        ],
        "size": 3,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_ColorRGB8"
        }
      }
    },
    "Math_ColorRGBF": {
      "type": {
        "members": [
          {
            "type": "float",
            "name": "r",
            "offset": 0,
            "doc": null
          },
          {
            "type": "float",
            "name": "g",
            "offset": 4,
            "doc": null
          },
          {
            "type": "float",
            "name": "b",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_ColorRGBF"
        }
      }
    },
    "Math_EasePairI32": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "start",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "target",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_EasePairI32"
        }
      }
    },
    "Math_GenerateRandom": {
      "function": {
        "analysis": {
          "en": {
            "address": 4457440,
            "rva": 263136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_GenerateRandom_Seed"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 499,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEmitSignal"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 371,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunToTarget"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunToTarget"
                },
                "instr_offset": 385,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWalkToTarget"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWalkToTarget"
                },
                "instr_offset": 355,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_UpdateTimedEvents"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 2386,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4462992,
            "rva": 268688,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_GenerateRandom_Seed"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 499,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEmitSignal"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 371,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunToTarget"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunToTarget"
                },
                "instr_offset": 385,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWalkToTarget"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWalkToTarget"
                },
                "instr_offset": 355,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_UpdateTimedEvents"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 2389,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4463008,
            "rva": 268704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_GenerateRandom_Seed"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 242,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 219,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_EvaluateBoardScore"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 499,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_InitializeProjectile"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 439,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEmitSignal"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTargetWithCamera"
                },
                "instr_offset": 371,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunToTarget"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunToTarget"
                },
                "instr_offset": 385,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWalkToTarget"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpWalkToTarget"
                },
                "instr_offset": 355,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_UpdateTimedEvents"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 2389,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t",
          "params": [
            {
              "name": "max_value",
              "type": "int32_t",
              "docs": "Exclusive upper bound for the scaled random result."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Math_GenerateRandom_Seed"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 56 8B C1",
          "match_offset": 0
        },
        "docs": "Advances the Park-Miller MINSTD seed and returns a scaled value in [0, max_value).",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 576,
          "symbol_index": 576,
          "accessor": "DTTR_PCDOGS_F_Math_GenerateRandom",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_GENERATE_RANDOM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_GENERATE_RANDOM"
        }
      }
    },
    "Math_GenerateRandom_Seed": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528516,
            "rva": 334212,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536744,
            "rva": 342440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536744,
            "rva": 342440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_GenerateRandom"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 299,
          "symbol_index": 299,
          "accessor": "DTTR_PCDOGS_D_Math_GenerateRandom_Seed",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_GENERATE_RANDOM_SEED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_GENERATE_RANDOM_SEED"
        }
      }
    },
    "Math_Matrix3x3I16": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "m00",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "m01",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "m02",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "m10",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "m11",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "m12",
            "offset": 10,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "m20",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "m21",
            "offset": 14,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "m22",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 18,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_Matrix3x3I16"
        }
      }
    },
    "Math_One": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509724,
            "rva": 315420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_SetConstantForceEffect"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuad"
                },
                "instr_offset": 194,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517916,
            "rva": 323612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_SetConstantForceEffect"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuad"
                },
                "instr_offset": 194,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517916,
            "rva": 323612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_SetConstantForceEffect"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuad"
                },
                "instr_offset": 194,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_RenderTexturedQuad"
            },
            "instr_offset": 194,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "DInput_SetConstantForceEffect"
            },
            "instr_offset": 23,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 72,
          "symbol_index": 72,
          "accessor": "DTTR_PCDOGS_D_Math_One",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_ONE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_ONE"
        }
      }
    },
    "Math_OrientedBoundsRecord": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I32",
            "name": "anchor_vec",
            "offset": 0,
            "doc": "First vector in the internal oriented-bounds record."
          },
          {
            "type": "Math_Vec3I32",
            "name": "extent_vec",
            "offset": 12,
            "doc": "Second extent-like vector; exact collision shape semantics are internal."
          },
          {
            "type": "Math_Vec3I32",
            "name": "orientation_vec_0",
            "offset": 24,
            "doc": "First orientation-like vector in the internal oriented-bounds record."
          },
          {
            "type": "int32_t",
            "name": "orientation_vec_1_x",
            "offset": 36,
            "doc": "Partial second orientation-like vector component used by current consumers."
          },
          {
            "type": "int32_t",
            "name": "orientation_vec_1_y",
            "offset": 40,
            "doc": "Partial second orientation-like vector component used by current consumers."
          }
        ],
        "size": 44,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Oriented-bounds record containing center, extent, and orientation-vector fields.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_OrientedBoundsRecord"
        }
      }
    },
    "Math_QuaternionI16": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "y",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "z",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "w",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_QuaternionI16"
        }
      }
    },
    "Math_RectF": {
      "type": {
        "members": [
          {
            "type": "float",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "float",
            "name": "y",
            "offset": 4,
            "doc": null
          },
          {
            "type": "float",
            "name": "w",
            "offset": 8,
            "doc": null
          },
          {
            "type": "float",
            "name": "h",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_RectF"
        }
      }
    },
    "Math_RectI16": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "y",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "w",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "h",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_RectI16"
        }
      }
    },
    "Math_RectI32": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "y",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "w",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "h",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_RectI32"
        }
      }
    },
    "Math_ScreenPointI16": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "y",
            "offset": 2,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_ScreenPointI16"
        }
      }
    },
    "Math_SetRandomSeed": {
      "function": {
        "analysis": {
          "en": {
            "address": 4457600,
            "rva": 263296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4463152,
            "rva": 268848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4463168,
            "rva": 268864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 871,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t",
          "params": [
            {
              "name": "seed",
              "type": "uint32_t",
              "docs": "New Park-Miller seed; zero is normalized to 1, values above 0x7fffffff subtract 0x7fffffff once."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4C 24 04 A1 ??",
          "match_offset": 0
        },
        "docs": "Stores a normalized random seed and returns the previous seed value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 577,
          "symbol_index": 577,
          "accessor": "DTTR_PCDOGS_F_Math_SetRandomSeed",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_SET_RANDOM_SEED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_SET_RANDOM_SEED"
        }
      }
    },
    "Math_SizeI16": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "width",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "height",
            "offset": 2,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_SizeI16"
        }
      }
    },
    "Math_SizeU16": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "width",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "height",
            "offset": 2,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_SizeU16"
        }
      }
    },
    "Math_SizeU32": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "width",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "height",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_SizeU32"
        }
      }
    },
    "Math_SizeU8": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "width",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "height",
            "offset": 1,
            "doc": null
          }
        ],
        "size": 2,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_SizeU8"
        }
      }
    },
    "Math_SnapVertexToNearestPoint": {
      "function": {
        "analysis": {
          "en": {
            "address": 4284576,
            "rva": 90272,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_SnapVertexToNearestPoint_DebugFPSUpdateInterval"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1659,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4285072,
            "rva": 90768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_SnapVertexToNearestPoint_DebugFPSUpdateInterval"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1659,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4285072,
            "rva": 90768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_SnapVertexToNearestPoint_DebugFPSUpdateInterval"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipAndDrawPolygon"
                },
                "instr_offset": 1659,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "x",
              "type": "float*"
            },
            {
              "name": "y",
              "type": "float*"
            },
            {
              "name": "screen_vertices",
              "type": "Graphics_ProjectedVertex*"
            },
            {
              "name": "vertex_count",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Math_SnapVertexToNearestPoint_DebugFPSUpdateInterval"
            },
            "instr_offset": 105,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 8B 5C 24 14 55 33 C9 56 57 85 DB 0F 8E ??",
          "match_offset": 0
        },
        "docs": "Snaps x/y to the first nearby Graphics_ProjectedVertex in the screen-vertex array whose screen_x/screen_y are both within 2 pixels.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 204,
          "symbol_index": 204,
          "accessor": "DTTR_PCDOGS_F_Math_SnapVertexToNearestPoint",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_SNAP_VERTEX_TO_NEAREST_POINT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_SNAP_VERTEX_TO_NEAREST_POINT"
        }
      }
    },
    "Math_SnapVertexToNearestPoint_DebugFPSUpdateInterval": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509736,
            "rva": 315432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_SnapVertexToNearestPoint"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517928,
            "rva": 323624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_SnapVertexToNearestPoint"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517928,
            "rva": 323624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Math_SnapVertexToNearestPoint"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Math_SnapVertexToNearestPoint"
            },
            "instr_offset": 105,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 75,
          "symbol_index": 75,
          "accessor": "DTTR_PCDOGS_D_Math_SnapVertexToNearestPoint_DebugFPSUpdateInterval",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_SNAP_VERTEX_TO_NEAREST_POINT_DEBUG_FPS_UPDATE_INTERVAL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_SNAP_VERTEX_TO_NEAREST_POINT_DEBUG_FPS_UPDATE_INTERVAL"
        }
      }
    },
    "Math_TransformAtanToCos": {
      "function": {
        "analysis": {
          "en": {
            "address": 4458704,
            "rva": 264400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1715,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3598,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4464256,
            "rva": 269952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1715,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3598,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4464272,
            "rva": 269968,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Animation_InterpolateQuat"
                },
                "instr_offset": 1715,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3598,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_CalculateOrientation"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "sin_value",
              "type": "int32_t"
            },
            {
              "name": "cos_value",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 8B 4C 24 04 50 51 E8 ?? ?? ?? ?? 0F",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 581,
          "symbol_index": 581,
          "accessor": "DTTR_PCDOGS_F_Math_TransformAtanToCos",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_TRANSFORM_ATAN_TO_COS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_TRANSFORM_ATAN_TO_COS"
        }
      }
    },
    "Math_TransformBarycentricToWorldCoords": {
      "function": {
        "analysis": {
          "en": {
            "address": 4347024,
            "rva": 152720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateGroundBarycentric"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4348960,
            "rva": 154656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateGroundBarycentric"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4348960,
            "rva": 154656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateGroundBarycentric"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "out_world_pos",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "41 20 55 56 8B B1 E8 ??",
          "match_offset": -13
        },
        "docs": "Transforms actor ground-contact barycentric state into world coordinates, writes outWorldPos[0..2], and returns outWorldPos.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 289,
          "symbol_index": 289,
          "accessor": "DTTR_PCDOGS_F_Math_TransformBarycentricToWorldCoords",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MATH_TRANSFORM_BARYCENTRIC_TO_WORLD_COORDS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MATH_TRANSFORM_BARYCENTRIC_TO_WORLD_COORDS"
        }
      }
    },
    "Math_UV8": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "u",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "v",
            "offset": 1,
            "doc": null
          }
        ],
        "size": 2,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_UV8"
        }
      }
    },
    "Math_Vec2F": {
      "type": {
        "members": [
          {
            "type": "float",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "float",
            "name": "y",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_Vec2F"
        }
      }
    },
    "Math_Vec2I16": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "y",
            "offset": 2,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_Vec2I16"
        }
      }
    },
    "Math_Vec2I32": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "y",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_Vec2I32"
        }
      }
    },
    "Math_Vec2I32XZ": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "z",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_Vec2I32XZ"
        }
      }
    },
    "Math_Vec3F": {
      "type": {
        "members": [
          {
            "type": "float",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "float",
            "name": "y",
            "offset": 4,
            "doc": null
          },
          {
            "type": "float",
            "name": "z",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_Vec3F"
        }
      }
    },
    "Math_Vec3I16": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "y",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "z",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 6,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_Vec3I16"
        }
      }
    },
    "Math_Vec3I32": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "y",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "z",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_Vec3I32"
        }
      }
    },
    "Math_Vec3I32XZY": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "y",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "z",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Three signed 32-bit vector components in plain X/Y/Z order; the historical XZY name is retained, but the audit disproved the X/Z/Y component ordering (+0x4 is the vertical Y axis).",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_Vec3I32XZY"
        }
      }
    },
    "Math_Vec3U": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "y",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "z",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Math_Vec3U"
        }
      }
    },
    "Math_Zero": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509728,
            "rva": 315424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByPlane"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4517920,
            "rva": 323616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByPlane"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4517920,
            "rva": 323616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ClipPolygonByPlane"
                },
                "instr_offset": 279,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Graphics_ClipPolygonByPlane"
            },
            "instr_offset": 279,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 27,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 73,
          "symbol_index": 73,
          "accessor": "DTTR_PCDOGS_D_Math_Zero",
          "sdk_id": "DTTR_PCDOGS_DATA_MATH_ZERO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MATH_ZERO"
        }
      }
    },
    "Mem_AllocateHandle": {
      "function": {
        "analysis": {
          "en": {
            "address": 4476128,
            "rva": 281824,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_AllocDebug"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_AllocFailed"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_AllocPrefix"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_DebugEnabled"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_OutOfExtents"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_Pool"
                },
                "instr_offset": 82,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_PoolHead"
                },
                "instr_offset": 1,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceWithHeader"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4483968,
            "rva": 289664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_AllocDebug"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_AllocFailed"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_AllocPrefix"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_DebugEnabled"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_OutOfExtents"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_Pool"
                },
                "instr_offset": 82,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_PoolHead"
                },
                "instr_offset": 1,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceWithHeader"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4483744,
            "rva": 289440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_AllocDebug"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_AllocFailed"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_AllocPrefix"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_DebugEnabled"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_OutOfExtents"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_Pool"
                },
                "instr_offset": 82,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_AllocateHandle_PoolHead"
                },
                "instr_offset": 1,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceWithHeader"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t",
          "params": [
            {
              "name": "size",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Mem_AllocateHandle_AllocDebug"
            },
            "instr_offset": 120,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_AllocateHandle_AllocFailed"
            },
            "instr_offset": 59,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_AllocateHandle_AllocPrefix"
            },
            "instr_offset": 34,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_AllocateHandle_OutOfExtents"
            },
            "instr_offset": 12,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_AllocateHandle_Pool"
            },
            "instr_offset": 82,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_AllocateHandle_PoolHead"
            },
            "instr_offset": 1,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_AllocateHandle_DebugEnabled"
            },
            "instr_offset": 105,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 35 ?? ?? ?? ?? 85 F6 57",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 625,
          "symbol_index": 625,
          "accessor": "DTTR_PCDOGS_F_Mem_AllocateHandle",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_ALLOCATE_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_ALLOCATE_HANDLE"
        }
      }
    },
    "Mem_AllocateHandle_AllocDebug": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541408,
            "rva": 347104,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549744,
            "rva": 355440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549724,
            "rva": 355420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_AllocateHandle"
            },
            "instr_offset": 120,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 310,
          "symbol_index": 310,
          "accessor": "DTTR_PCDOGS_D_Mem_AllocateHandle_AllocDebug",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_ALLOCATE_HANDLE_ALLOC_DEBUG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_ALLOCATE_HANDLE_ALLOC_DEBUG"
        }
      }
    },
    "Mem_AllocateHandle_AllocFailed": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541428,
            "rva": 347124,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549764,
            "rva": 355460,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549744,
            "rva": 355440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_AllocateHandle"
            },
            "instr_offset": 59,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 311,
          "symbol_index": 311,
          "accessor": "DTTR_PCDOGS_D_Mem_AllocateHandle_AllocFailed",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_ALLOCATE_HANDLE_ALLOC_FAILED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_ALLOCATE_HANDLE_ALLOC_FAILED"
        }
      }
    },
    "Mem_AllocateHandle_AllocPrefix": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541472,
            "rva": 347168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549808,
            "rva": 355504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549788,
            "rva": 355484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_AllocateHandle"
            },
            "instr_offset": 34,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 312,
          "symbol_index": 312,
          "accessor": "DTTR_PCDOGS_D_Mem_AllocateHandle_AllocPrefix",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_ALLOCATE_HANDLE_ALLOC_PREFIX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_ALLOCATE_HANDLE_ALLOC_PREFIX"
        }
      }
    },
    "Mem_AllocateHandle_DebugEnabled": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439736,
            "rva": 2245432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449968,
            "rva": 2255664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449392,
            "rva": 2255088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_AllocateHandle"
            },
            "instr_offset": 105,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 732,
          "symbol_index": 732,
          "accessor": "DTTR_PCDOGS_D_Mem_AllocateHandle_DebugEnabled",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_ALLOCATE_HANDLE_DEBUG_ENABLED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_ALLOCATE_HANDLE_DEBUG_ENABLED"
        }
      }
    },
    "Mem_AllocateHandle_OutOfExtents": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541488,
            "rva": 347184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549824,
            "rva": 355520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549804,
            "rva": 355500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_AllocateHandle"
            },
            "instr_offset": 12,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 313,
          "symbol_index": 313,
          "accessor": "DTTR_PCDOGS_D_Mem_AllocateHandle_OutOfExtents",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_ALLOCATE_HANDLE_OUT_OF_EXTENTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_ALLOCATE_HANDLE_OUT_OF_EXTENTS"
        }
      }
    },
    "Mem_AllocateHandle_Pool": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838952,
            "rva": 644648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 82,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4849184,
            "rva": 654880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 82,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848608,
            "rva": 654304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 82,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_AllocateHandle"
            },
            "instr_offset": 82,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 724,
          "symbol_index": 724,
          "accessor": "DTTR_PCDOGS_D_Mem_AllocateHandle_Pool",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_ALLOCATE_HANDLE_POOL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_ALLOCATE_HANDLE_POOL"
        }
      }
    },
    "Mem_AllocateHandle_PoolHead": {
      "data": {
        "analysis": {
          "en": {
            "address": 6438952,
            "rva": 2244648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 1,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449184,
            "rva": 2254880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 1,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6448608,
            "rva": 2254304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 1,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_AllocateHandle"
            },
            "instr_offset": 1,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 727,
          "symbol_index": 727,
          "accessor": "DTTR_PCDOGS_D_Mem_AllocateHandle_PoolHead",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_ALLOCATE_HANDLE_POOL_HEAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_ALLOCATE_HANDLE_POOL_HEAD"
        }
      }
    },
    "Mem_FindHeapBlockByAddress": {
      "function": {
        "analysis": {
          "en": {
            "address": 4490601,
            "rva": 296297,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4498441,
            "rva": 304137,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4498217,
            "rva": 303913,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "address",
              "type": "void*",
              "docs": "Allocation address to locate within the custom heap's 1 MiB segments."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 8D 0C 80",
          "match_offset": 0
        },
        "docs": "Scans the heap segment table and returns the segment entry whose base contains address, or NULL for addresses outside the custom heap.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 694,
          "symbol_index": 694,
          "accessor": "DTTR_PCDOGS_F_Mem_FindHeapBlockByAddress",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_FIND_HEAP_BLOCK_BY_ADDRESS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_FIND_HEAP_BLOCK_BY_ADDRESS"
        }
      }
    },
    "Mem_FreeAllExtents": {
      "function": {
        "analysis": {
          "en": {
            "address": 4476480,
            "rva": 282176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_FreeAllExtents_LeakUnreleasedExtent"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484320,
            "rva": 290016,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_FreeAllExtents_LeakUnreleasedExtent"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484096,
            "rva": 289792,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_FreeAllExtents_LeakUnreleasedExtent"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Mem_FreeAllExtents_LeakUnreleasedExtent"
            },
            "instr_offset": 22,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 BE ?? ?? ?? ?? 8B 46",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 628,
          "symbol_index": 628,
          "accessor": "DTTR_PCDOGS_F_Mem_FreeAllExtents",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_FREE_ALL_EXTENTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_FREE_ALL_EXTENTS"
        }
      }
    },
    "Mem_FreeAllExtents_LeakUnreleasedExtent": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541520,
            "rva": 347216,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeAllExtents"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549856,
            "rva": 355552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeAllExtents"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549836,
            "rva": 355532,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeAllExtents"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_FreeAllExtents"
            },
            "instr_offset": 22,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 314,
          "symbol_index": 314,
          "accessor": "DTTR_PCDOGS_D_Mem_FreeAllExtents_LeakUnreleasedExtent",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_FREE_ALL_EXTENTS_LEAK_UNRELEASED_EXTENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_FREE_ALL_EXTENTS_LEAK_UNRELEASED_EXTENT"
        }
      }
    },
    "Mem_FreeCRT": {
      "function": {
        "analysis": {
          "en": {
            "address": 4484038,
            "rva": 289734,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FindHeapBlockByAddress"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 960,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeAllExtents"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6759,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4491878,
            "rva": 297574,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FindHeapBlockByAddress"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 960,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeAllExtents"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6759,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4491654,
            "rva": 297350,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FindHeapBlockByAddress"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 960,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeAllExtents"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6759,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "block",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 85 F6 74 24 56 E8 ?? ?? ?? ?? 59 85 C0 56 74 0A 50 E8",
          "match_offset": 0
        },
        "docs": "Frees a block from the game's CRT malloc path.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 26,
          "symbol_index": 26,
          "accessor": "DTTR_PCDOGS_F_Mem_FreeCRT",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_FREE_CRT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_FREE_CRT"
        }
      }
    },
    "Mem_FreeHeapBlock": {
      "function": {
        "analysis": {
          "en": {
            "address": 4490644,
            "rva": 296340,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_FreeHeapBlock_LastFreedPageIndex"
                },
                "instr_offset": 569,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "CRT_CaptureNLGNotifyContext"
                },
                "instr_offset": 7004,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 5264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 5289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 5951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 6759,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 2996,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 3140,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 5852,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 5905,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 6065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 6724,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 6827,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConcatCRTString"
                },
                "instr_offset": 7387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConcatCRTString"
                },
                "instr_offset": 7404,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConcatCRTString"
                },
                "instr_offset": 7422,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 7924,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4498484,
            "rva": 304180,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_FreeHeapBlock_LastFreedPageIndex"
                },
                "instr_offset": 569,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "CRT_CaptureNLGNotifyContext"
                },
                "instr_offset": 7004,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 5264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 5289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 5951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 6759,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 2996,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 3140,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 5852,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 5905,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 6065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 6724,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 6827,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConcatCRTString"
                },
                "instr_offset": 7387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConcatCRTString"
                },
                "instr_offset": 7404,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConcatCRTString"
                },
                "instr_offset": 7422,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 7924,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4498260,
            "rva": 303956,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_FreeHeapBlock_LastFreedPageIndex"
                },
                "instr_offset": 569,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "CRT_CaptureNLGNotifyContext"
                },
                "instr_offset": 7004,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 5264,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 5289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 5951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 6759,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 2996,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 3140,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 5852,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 5905,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 6065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 6724,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 6827,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConcatCRTString"
                },
                "instr_offset": 7387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConcatCRTString"
                },
                "instr_offset": 7404,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConcatCRTString"
                },
                "instr_offset": 7422,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 7924,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "heap_segment",
              "type": "void*",
              "docs": "Heap segment entry returned by Mem_FindHeapBlockByAddress."
            },
            {
              "name": "block",
              "type": "void*",
              "docs": "Allocated small-block pointer to release."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Mem_FreeHeapBlock_LastFreedPageIndex"
            },
            "instr_offset": 569,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C2 FC 57 C1 EE 0F 8B ??",
          "match_offset": -26
        },
        "docs": "Frees a custom small-block allocation, coalesces adjacent free blocks, updates size-class bitmaps, and releases empty pages/segments back to the OS.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 695,
          "symbol_index": 695,
          "accessor": "DTTR_PCDOGS_F_Mem_FreeHeapBlock",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_FREE_HEAP_BLOCK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_FREE_HEAP_BLOCK"
        }
      }
    },
    "Mem_FreeHeapBlock_LastFreedPageIndex": {
      "data": {
        "analysis": {
          "en": {
            "address": 27832648,
            "rva": 23638344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 569,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843912,
            "rva": 23649608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 569,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27843336,
            "rva": 23649032,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 569,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_FreeHeapBlock"
            },
            "instr_offset": 569,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 974,
          "symbol_index": 974,
          "accessor": "DTTR_PCDOGS_D_Mem_FreeHeapBlock_LastFreedPageIndex",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_FREE_HEAP_BLOCK_LAST_FREED_PAGE_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_FREE_HEAP_BLOCK_LAST_FREED_PAGE_INDEX"
        }
      }
    },
    "Mem_InitializeAllocator": {
      "function": {
        "analysis": {
          "en": {
            "address": 4476416,
            "rva": 282112,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeAllocator_HandlePoolHandleID"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeAllocator_HeapAllocatorInitialized"
                },
                "instr_offset": 45,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeResourceGameEngine"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484256,
            "rva": 289952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeAllocator_HandlePoolHandleID"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeAllocator_HeapAllocatorInitialized"
                },
                "instr_offset": 45,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeResourceGameEngine"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484032,
            "rva": 289728,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeAllocator_HandlePoolHandleID"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeAllocator_HeapAllocatorInitialized"
                },
                "instr_offset": 45,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeResourceGameEngine"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Mem_InitializeAllocator_HandlePoolHandleID"
            },
            "instr_offset": 10,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_InitializeAllocator_HeapAllocatorInitialized"
            },
            "instr_offset": 45,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C7 05 ?? ?? ?? ?? ?? ?? ?? ?? B8 ?? ?? ?? ?? 33",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 627,
          "symbol_index": 627,
          "accessor": "DTTR_PCDOGS_F_Mem_InitializeAllocator",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_INITIALIZE_ALLOCATOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_INITIALIZE_ALLOCATOR"
        }
      }
    },
    "Mem_InitializeAllocator_HandlePoolHandleID": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838960,
            "rva": 644656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeAllocator"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4849192,
            "rva": 654888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeAllocator"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848616,
            "rva": 654312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeAllocator"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_InitializeAllocator"
            },
            "instr_offset": 10,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 725,
          "symbol_index": 725,
          "accessor": "DTTR_PCDOGS_D_Mem_InitializeAllocator_HandlePoolHandleID",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_INITIALIZE_ALLOCATOR_HANDLE_POOL_HANDLE_ID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_INITIALIZE_ALLOCATOR_HANDLE_POOL_HANDLE_ID"
        }
      }
    },
    "Mem_InitializeAllocator_HeapAllocatorInitialized": {
      "data": {
        "analysis": {
          "en": {
            "address": 6438940,
            "rva": 2244636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeAllocator"
                },
                "instr_offset": 45,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449172,
            "rva": 2254868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeAllocator"
                },
                "instr_offset": 45,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6448596,
            "rva": 2254292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeAllocator"
                },
                "instr_offset": 45,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_InitializeAllocator"
            },
            "instr_offset": 45,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 726,
          "symbol_index": 726,
          "accessor": "DTTR_PCDOGS_D_Mem_InitializeAllocator_HeapAllocatorInitialized",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_INITIALIZE_ALLOCATOR_HEAP_ALLOCATOR_INITIALIZED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_INITIALIZE_ALLOCATOR_HEAP_ALLOCATOR_INITIALIZED"
        }
      }
    },
    "Mem_InitializeHeapAllocator": {
      "function": {
        "analysis": {
          "en": {
            "address": 4490539,
            "rva": 296235,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_LastFreedSegment"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_MaxSegments"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_SegmentCount"
                },
                "instr_offset": 36,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_SegmentTableCached"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_State"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 810,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4498379,
            "rva": 304075,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_LastFreedSegment"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_MaxSegments"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_SegmentCount"
                },
                "instr_offset": 36,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_SegmentTableCached"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_State"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 810,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4498155,
            "rva": 303851,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_LastFreedSegment"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_MaxSegments"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_SegmentCount"
                },
                "instr_offset": 36,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_SegmentTableCached"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_InitializeHeapAllocator_State"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 810,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Mem_InitializeHeapAllocator_MaxSegments"
            },
            "instr_offset": 50,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_InitializeHeapAllocator_SegmentTableCached"
            },
            "instr_offset": 45,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_InitializeHeapAllocator_LastFreedSegment"
            },
            "instr_offset": 29,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_InitializeHeapAllocator_SegmentCount"
            },
            "instr_offset": 36,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_InitializeHeapAllocator_State"
            },
            "instr_offset": 21,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "68 40 01 00 00 6A 00 FF 35 ??",
          "match_offset": 0
        },
        "docs": "Allocates the custom small-block heap segment table, clears the last-freed segment cache, and initializes segment counters.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 693,
          "symbol_index": 693,
          "accessor": "DTTR_PCDOGS_F_Mem_InitializeHeapAllocator",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_INITIALIZE_HEAP_ALLOCATOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_INITIALIZE_HEAP_ALLOCATOR"
        }
      }
    },
    "Mem_InitializeHeapAllocator_LastFreedSegment": {
      "data": {
        "analysis": {
          "en": {
            "address": 27832656,
            "rva": 23638352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843920,
            "rva": 23649616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27843344,
            "rva": 23649040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_InitializeHeapAllocator"
            },
            "instr_offset": 29,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 976,
          "symbol_index": 976,
          "accessor": "DTTR_PCDOGS_D_Mem_InitializeHeapAllocator_LastFreedSegment",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_INITIALIZE_HEAP_ALLOCATOR_LAST_FREED_SEGMENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_INITIALIZE_HEAP_ALLOCATOR_LAST_FREED_SEGMENT"
        }
      }
    },
    "Mem_InitializeHeapAllocator_MaxSegments": {
      "data": {
        "analysis": {
          "en": {
            "address": 27832644,
            "rva": 23638340,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843908,
            "rva": 23649604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27843332,
            "rva": 23649028,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_InitializeHeapAllocator"
            },
            "instr_offset": 50,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 973,
          "symbol_index": 973,
          "accessor": "DTTR_PCDOGS_D_Mem_InitializeHeapAllocator_MaxSegments",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_INITIALIZE_HEAP_ALLOCATOR_MAX_SEGMENTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_INITIALIZE_HEAP_ALLOCATOR_MAX_SEGMENTS"
        }
      }
    },
    "Mem_InitializeHeapAllocator_SegmentCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 27832660,
            "rva": 23638356,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 36,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843924,
            "rva": 23649620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 36,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27843348,
            "rva": 23649044,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 36,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_InitializeHeapAllocator"
            },
            "instr_offset": 36,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 977,
          "symbol_index": 977,
          "accessor": "DTTR_PCDOGS_D_Mem_InitializeHeapAllocator_SegmentCount",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_INITIALIZE_HEAP_ALLOCATOR_SEGMENT_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_INITIALIZE_HEAP_ALLOCATOR_SEGMENT_COUNT"
        }
      }
    },
    "Mem_InitializeHeapAllocator_SegmentTableCached": {
      "data": {
        "analysis": {
          "en": {
            "address": 27832652,
            "rva": 23638348,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843916,
            "rva": 23649612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27843340,
            "rva": 23649036,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_InitializeHeapAllocator"
            },
            "instr_offset": 45,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 975,
          "symbol_index": 975,
          "accessor": "DTTR_PCDOGS_D_Mem_InitializeHeapAllocator_SegmentTableCached",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_INITIALIZE_HEAP_ALLOCATOR_SEGMENT_TABLE_CACHED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_INITIALIZE_HEAP_ALLOCATOR_SEGMENT_TABLE_CACHED"
        }
      }
    },
    "Mem_InitializeHeapAllocator_State": {
      "data": {
        "analysis": {
          "en": {
            "address": 27832664,
            "rva": 23638360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27843928,
            "rva": 23649624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27843352,
            "rva": 23649048,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_InitializeHeapAllocator"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_InitializeHeapAllocator"
            },
            "instr_offset": 21,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 978,
          "symbol_index": 978,
          "accessor": "DTTR_PCDOGS_D_Mem_InitializeHeapAllocator_State",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_INITIALIZE_HEAP_ALLOCATOR_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_INITIALIZE_HEAP_ALLOCATOR_STATE"
        }
      }
    },
    "Mem_IsValidHandle": {
      "function": {
        "analysis": {
          "en": {
            "address": 4476816,
            "rva": 282512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484656,
            "rva": 290352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484432,
            "rva": 290128,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "handle",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 85 C0 7E ?? 3D A0 86 01 00 7F ?? 8B C8 C1 E1 04 39 81 ?? ?? ?? ?? 75 ?? B8 01 00 00 00 C3 33 C0 C3 90 90 90 90 90 90 90 90 90 90 90 A1 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 630,
          "symbol_index": 630,
          "accessor": "DTTR_PCDOGS_F_Mem_IsValidHandle",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_IS_VALID_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_IS_VALID_HANDLE"
        }
      }
    },
    "Mem_Malloc": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4482516,
            "rva": 288212,
            "image_base": 4194304
          },
          "eu": {
            "address": 4490356,
            "rva": 296052,
            "image_base": 4194304
          },
          "sc": {
            "address": 4490132,
            "rva": 295828,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "FF 35 ?? ?? ?? ?? FF 74 24"
      }
    },
    "Mem_MallocCRT": {
      "function": {
        "analysis": {
          "en": {
            "address": 4482516,
            "rva": 288212,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_AllocateBuffer"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetDeviceStateBuffer"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 2996,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 3140,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5852,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5905,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6724,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6827,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 2327,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4490356,
            "rva": 296052,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_AllocateBuffer"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetDeviceStateBuffer"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 2996,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 3140,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5852,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5905,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6724,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6827,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 2327,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4490132,
            "rva": 295828,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_AllocateBuffer"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetDeviceStateBuffer"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 2996,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 3140,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5852,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 5905,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6065,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6724,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 6827,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_Realloc"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 2327,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "size",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 35 ?? ?? ?? ?? FF 74 24",
          "match_offset": 0
        },
        "docs": "Allocates size bytes through the game's CRT malloc path and returns the allocated pointer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 25,
          "symbol_index": 25,
          "accessor": "DTTR_PCDOGS_F_Mem_MallocCRT",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_MALLOC_CRT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_MALLOC_CRT"
        }
      }
    },
    "Mem_MallocWithRetry": {
      "function": {
        "analysis": {
          "en": {
            "address": 4475856,
            "rva": 281552,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_DebugKilledByPlayer"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_Failed"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_OutOfMemory"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_UIConfirmStopGame"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4483696,
            "rva": 289392,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_DebugKilledByPlayer"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_Failed"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_OutOfMemory"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_UIConfirmStopGame"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4483472,
            "rva": 289168,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_DebugKilledByPlayer"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_Failed"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_OutOfMemory"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_MallocWithRetry_UIConfirmStopGame"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "size",
              "type": "uint32_t"
            },
            {
              "name": "context",
              "type": "char const*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Mem_MallocWithRetry_DebugKilledByPlayer"
            },
            "instr_offset": 96,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_MallocWithRetry_UIConfirmStopGame"
            },
            "instr_offset": 78,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_MallocWithRetry_OutOfMemory"
            },
            "instr_offset": 49,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_MallocWithRetry_Failed"
            },
            "instr_offset": 26,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 56 57 8B 7C 24 10 57 E8 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 623,
          "symbol_index": 623,
          "accessor": "DTTR_PCDOGS_F_Mem_MallocWithRetry",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_MALLOC_WITH_RETRY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_MALLOC_WITH_RETRY"
        }
      }
    },
    "Mem_MallocWithRetry_DebugKilledByPlayer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541164,
            "rva": 346860,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549500,
            "rva": 355196,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549480,
            "rva": 355176,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_MallocWithRetry"
            },
            "instr_offset": 96,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 305,
          "symbol_index": 305,
          "accessor": "DTTR_PCDOGS_D_Mem_MallocWithRetry_DebugKilledByPlayer",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_MALLOC_WITH_RETRY_DEBUG_KILLED_BY_PLAYER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_MALLOC_WITH_RETRY_DEBUG_KILLED_BY_PLAYER"
        }
      }
    },
    "Mem_MallocWithRetry_Failed": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541340,
            "rva": 347036,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549676,
            "rva": 355372,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549656,
            "rva": 355352,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_MallocWithRetry"
            },
            "instr_offset": 26,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 308,
          "symbol_index": 308,
          "accessor": "DTTR_PCDOGS_D_Mem_MallocWithRetry_Failed",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_MALLOC_WITH_RETRY_FAILED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_MALLOC_WITH_RETRY_FAILED"
        }
      }
    },
    "Mem_MallocWithRetry_OutOfMemory": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541260,
            "rva": 346956,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549596,
            "rva": 355292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549576,
            "rva": 355272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_MallocWithRetry"
            },
            "instr_offset": 49,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 307,
          "symbol_index": 307,
          "accessor": "DTTR_PCDOGS_D_Mem_MallocWithRetry_OutOfMemory",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_MALLOC_WITH_RETRY_OUT_OF_MEMORY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_MALLOC_WITH_RETRY_OUT_OF_MEMORY"
        }
      }
    },
    "Mem_MallocWithRetry_UIConfirmStopGame": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541228,
            "rva": 346924,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549564,
            "rva": 355260,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549544,
            "rva": 355240,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_MallocWithRetry"
            },
            "instr_offset": 78,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 306,
          "symbol_index": 306,
          "accessor": "DTTR_PCDOGS_D_Mem_MallocWithRetry_UIConfirmStopGame",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_MALLOC_WITH_RETRY_UI_CONFIRM_STOP_GAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_MALLOC_WITH_RETRY_UI_CONFIRM_STOP_GAME"
        }
      }
    },
    "Mem_ProbeCRTRead4": {
      "function": {
        "analysis": {
          "en": {
            "address": 4488882,
            "rva": 294578,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4496722,
            "rva": 302418,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4496498,
            "rva": 302194,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "address",
              "type": "void const*"
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": false,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? 83 EC 10",
          "match_offset": -24
        },
        "docs": "MSVC __rt_probe_read4 helper reached from _longjmp and used for guarded reads.",
        "hook": {
          "kind": "unsupported",
          "patch_size": 0,
          "entry_patch_size": 0
        },
        "sdk": {
          "id": 707,
          "symbol_index": 707,
          "accessor": "DTTR_PCDOGS_F_Mem_ProbeCRTRead4",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_PROBE_CRT_READ4",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_PROBE_CRT_READ4"
        }
      }
    },
    "Mem_Realloc": {
      "function": {
        "analysis": {
          "en": {
            "address": 4483750,
            "rva": 289446,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FindHeapBlockByAddress"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4491590,
            "rva": 297286,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FindHeapBlockByAddress"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4491366,
            "rva": 297062,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FindHeapBlockByAddress"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_RegisterButtonMapping"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "ptr",
              "type": "void*"
            },
            {
              "name": "size",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "75 ?? FF 74 24 18 E8 ??",
          "match_offset": -10
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 673,
          "symbol_index": 673,
          "accessor": "DTTR_PCDOGS_F_Mem_Realloc",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_REALLOC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_REALLOC"
        }
      }
    },
    "Mem_ReleaseHandle": {
      "function": {
        "analysis": {
          "en": {
            "address": 4476592,
            "rva": 282288,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_ReleaseHandle_FreeDebug"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_ReleaseHandle_LeakInvalidExtent"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_ReleaseHandle_LeakUnallocated"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484432,
            "rva": 290128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_ReleaseHandle_FreeDebug"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_ReleaseHandle_LeakInvalidExtent"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_ReleaseHandle_LeakUnallocated"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484208,
            "rva": 289904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_ReleaseHandle_FreeDebug"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_ReleaseHandle_LeakInvalidExtent"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mem_ReleaseHandle_LeakUnallocated"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "handle",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Mem_ReleaseHandle_LeakInvalidExtent"
            },
            "instr_offset": 158,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_ReleaseHandle_FreeDebug"
            },
            "instr_offset": 76,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mem_ReleaseHandle_LeakUnallocated"
            },
            "instr_offset": 41,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4C 24 04 56 49 0F 88 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 629,
          "symbol_index": 629,
          "accessor": "DTTR_PCDOGS_F_Mem_ReleaseHandle",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_RELEASE_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_RELEASE_HANDLE"
        }
      }
    },
    "Mem_ReleaseHandle_FreeDebug": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541604,
            "rva": 347300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549940,
            "rva": 355636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549920,
            "rva": 355616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_ReleaseHandle"
            },
            "instr_offset": 76,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 316,
          "symbol_index": 316,
          "accessor": "DTTR_PCDOGS_D_Mem_ReleaseHandle_FreeDebug",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_RELEASE_HANDLE_FREE_DEBUG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_RELEASE_HANDLE_FREE_DEBUG"
        }
      }
    },
    "Mem_ReleaseHandle_LeakInvalidExtent": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541560,
            "rva": 347256,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549896,
            "rva": 355592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549876,
            "rva": 355572,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_ReleaseHandle"
            },
            "instr_offset": 158,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 315,
          "symbol_index": 315,
          "accessor": "DTTR_PCDOGS_D_Mem_ReleaseHandle_LeakInvalidExtent",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_RELEASE_HANDLE_LEAK_INVALID_EXTENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_RELEASE_HANDLE_LEAK_INVALID_EXTENT"
        }
      }
    },
    "Mem_ReleaseHandle_LeakUnallocated": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541620,
            "rva": 347316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549956,
            "rva": 355652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549936,
            "rva": 355632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mem_ReleaseHandle"
            },
            "instr_offset": 41,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 317,
          "symbol_index": 317,
          "accessor": "DTTR_PCDOGS_D_Mem_ReleaseHandle_LeakUnallocated",
          "sdk_id": "DTTR_PCDOGS_DATA_MEM_RELEASE_HANDLE_LEAK_UNALLOCATED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MEM_RELEASE_HANDLE_LEAK_UNALLOCATED"
        }
      }
    },
    "Mem_SwapBytes": {
      "function": {
        "analysis": {
          "en": {
            "address": 4482472,
            "rva": 288168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunInsertionSort"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4490312,
            "rva": 296008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunInsertionSort"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4490088,
            "rva": 295784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunInsertionSort"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "left",
              "type": "char*"
            },
            {
              "name": "right",
              "type": "char*"
            },
            {
              "name": "byte_count",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8B 4C 24 08 3B C1 56 74 ?? 8B 54 24 10 8B F2 4A 85 F6 74 ??",
          "match_offset": 0
        },
        "docs": "Swaps byteCount bytes between two element buffers.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 670,
          "symbol_index": 670,
          "accessor": "DTTR_PCDOGS_F_Mem_SwapBytes",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MEM_SWAP_BYTES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MEM_SWAP_BYTES"
        }
      }
    },
    "Menu_ActionResult": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "action",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "selected_index",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "sound_effect",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "pad",
            "offset": 3,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Menu_ActionResult"
        }
      }
    },
    "Menu_AnimateSlots": {
      "function": {
        "analysis": {
          "en": {
            "address": 4360080,
            "rva": 165776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_AnimateSlots_PKGResourceCurrentUsableMaterials"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_InitializedFlag"
                },
                "instr_offset": 292,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4362208,
            "rva": 167904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_AnimateSlots_PKGResourceCurrentUsableMaterials"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_InitializedFlag"
                },
                "instr_offset": 292,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4362208,
            "rva": 167904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_AnimateSlots_PKGResourceCurrentUsableMaterials"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_InitializedFlag"
                },
                "instr_offset": 292,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "UI_InitializedFlag"
            },
            "instr_offset": 292,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_AnimateSlots_PKGResourceCurrentUsableMaterials"
            },
            "instr_offset": 22,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 0C 8B 0D ?? ?? ?? ?? 53 55",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 337,
          "symbol_index": 337,
          "accessor": "DTTR_PCDOGS_F_Menu_AnimateSlots",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_ANIMATE_SLOTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_ANIMATE_SLOTS"
        }
      }
    },
    "Menu_AnimateSlots_PKGResourceCurrentUsableMaterials": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507864,
            "rva": 2313560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519128,
            "rva": 2324824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518552,
            "rva": 2324248,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_AnimateSlots"
            },
            "instr_offset": 22,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 833,
          "symbol_index": 833,
          "accessor": "DTTR_PCDOGS_D_Menu_AnimateSlots_PKGResourceCurrentUsableMaterials",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_ANIMATE_SLOTS_PKG_RESOURCE_CURRENT_USABLE_MATERIALS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_ANIMATE_SLOTS_PKG_RESOURCE_CURRENT_USABLE_MATERIALS"
        }
      }
    },
    "Menu_CheckPauseInput": {
      "function": {
        "analysis": {
          "en": {
            "address": 4373392,
            "rva": 179088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_CheckPauseInput_Delay"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "MiniGame_SetScoreValues"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_SetCompletionFlags"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_IsGameComplete"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameComplete"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 377,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2345,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4377088,
            "rva": 182784,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_CheckPauseInput_Delay"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "MiniGame_SetScoreValues"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_SetCompletionFlags"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_IsGameComplete"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameComplete"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 377,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2345,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4377056,
            "rva": 182752,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_CheckPauseInput_Delay"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "MiniGame_SetScoreValues"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_SetCompletionFlags"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_IsGameComplete"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameComplete"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 377,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2345,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "allow_pause",
              "type": "char"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_CheckPauseInput_Delay"
            },
            "instr_offset": 90,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A0 ?? ?? ?? ?? 84 C0 0F 85 ?? ?? ?? ?? 66 A1",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 364,
          "symbol_index": 364,
          "accessor": "DTTR_PCDOGS_F_Menu_CheckPauseInput",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_CHECK_PAUSE_INPUT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_CHECK_PAUSE_INPUT"
        }
      }
    },
    "Menu_CheckPauseInput_Delay": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831892,
            "rva": 637588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840796,
            "rva": 646492,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840780,
            "rva": 646476,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_CheckPauseInput"
            },
            "instr_offset": 90,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 577,
          "symbol_index": 577,
          "accessor": "DTTR_PCDOGS_D_Menu_CheckPauseInput_Delay",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_CHECK_PAUSE_INPUT_DELAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_CHECK_PAUSE_INPUT_DELAY"
        }
      }
    },
    "Menu_ClearTransitionFlags": {
      "function": {
        "analysis": {
          "en": {
            "address": 4356272,
            "rva": 161968,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_BoneAndLivesCounterAnimState"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_PuppyCounterAnimState"
                },
                "instr_offset": 23,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2393,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ResetState"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4358400,
            "rva": 164096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_BoneAndLivesCounterAnimState"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_PuppyCounterAnimState"
                },
                "instr_offset": 23,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2393,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ResetState"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4358400,
            "rva": 164096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_BoneAndLivesCounterAnimState"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_PuppyCounterAnimState"
                },
                "instr_offset": 23,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2393,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ResetState"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "UI_PuppyCounterAnimState"
            },
            "instr_offset": 23,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "UI_BoneAndLivesCounterAnimState"
            },
            "instr_offset": 7,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "B8 42 00 00 00 33 C9 66 39 05 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 331,
          "symbol_index": 331,
          "accessor": "DTTR_PCDOGS_F_Menu_ClearTransitionFlags",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_CLEAR_TRANSITION_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_CLEAR_TRANSITION_FLAGS"
        }
      }
    },
    "Menu_GetPlayerLevelInfo": {
      "function": {
        "analysis": {
          "en": {
            "address": 4360560,
            "rva": 166256,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 205,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4362768,
            "rva": 168464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 205,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4362768,
            "rva": 168464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 205,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "out_info",
              "type": "Menu_LevelProgressInfo*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? 85 C0 75 ?? 8B 4C",
          "match_offset": 0
        },
        "docs": "Fill outInfo with current level puppy/bone totals and the active player's bone/life counters for menu display.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 339,
          "symbol_index": 339,
          "accessor": "DTTR_PCDOGS_F_Menu_GetPlayerLevelInfo",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_GET_PLAYER_LEVEL_INFO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_GET_PLAYER_LEVEL_INFO"
        }
      }
    },
    "Menu_HandleOptionsLogic": {
      "function": {
        "analysis": {
          "en": {
            "address": 4364816,
            "rva": 170512,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_AudioMenuSoundEffect"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_BackupData"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_Column"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_DisplayMenuSetting"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputControllerHammerheadButtons"
                },
                "instr_offset": 340,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputGamepadMappings"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputKeyboardMappings"
                },
                "instr_offset": 1061,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputMenuButtonRemappingActive"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputMenuControlsButtonIndex"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputMenuControlsKeyIndex"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_OptionValueScratch"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_State"
                },
                "instr_offset": 327,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_SubState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_UIState5"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Options_MenuSelection"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 970,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 781,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 997,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 1202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 922,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 1111,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 652,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4368112,
            "rva": 173808,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_AudioMenuSoundEffect"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_BackupData"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_Column"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_DisplayMenuSetting"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputControllerHammerheadButtons"
                },
                "instr_offset": 340,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputGamepadMappings"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputKeyboardMappings"
                },
                "instr_offset": 1061,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputMenuButtonRemappingActive"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputMenuControlsButtonIndex"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputMenuControlsKeyIndex"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_OptionValueScratch"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_State"
                },
                "instr_offset": 327,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_SubState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_UIState5"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Options_MenuSelection"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 997,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 786,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 1024,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 1246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 912,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 405,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 949,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 1155,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 652,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4368112,
            "rva": 173808,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_AudioMenuSoundEffect"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_BackupData"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_Column"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_DisplayMenuSetting"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputControllerHammerheadButtons"
                },
                "instr_offset": 340,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputGamepadMappings"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputKeyboardMappings"
                },
                "instr_offset": 1061,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputMenuButtonRemappingActive"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputMenuControlsButtonIndex"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_InputMenuControlsKeyIndex"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_OptionValueScratch"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_State"
                },
                "instr_offset": 327,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_SubState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleOptionsLogic_UIState5"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Options_MenuSelection"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_SaveSettingsToINI"
                },
                "instr_offset": 997,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 786,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 832,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 1024,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetPressedButton"
                },
                "instr_offset": 1246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeButtonMappings"
                },
                "instr_offset": 912,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 405,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 949,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderButtonPrompt"
                },
                "instr_offset": 1155,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 652,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_OptionValueScratch"
            },
            "instr_offset": 149,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_BackupData"
            },
            "instr_offset": 169,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_InputKeyboardMappings"
            },
            "instr_offset": 1061,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_InputGamepadMappings"
            },
            "instr_offset": 154,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_AudioMenuSoundEffect"
            },
            "instr_offset": 9,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_InputMenuControlsKeyIndex"
            },
            "instr_offset": 164,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_InputMenuControlsButtonIndex"
            },
            "instr_offset": 159,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_Column"
            },
            "instr_offset": 225,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Options_MenuSelection"
            },
            "instr_offset": 58,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_InputMenuButtonRemappingActive"
            },
            "instr_offset": 515,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_State"
            },
            "instr_offset": 327,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_UIState5"
            },
            "instr_offset": 46,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_SubState"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_DisplayMenuSetting"
            },
            "instr_offset": 895,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleOptionsLogic_InputControllerHammerheadButtons"
            },
            "instr_offset": 340,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? ?? 56 48 57 C6 05 ?? ?? ?? ?? FF 0F 84",
          "match_offset": 0
        },
        "docs": "Advance the controls-configuration submenu state and return non-zero when the options menu is exiting.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 355,
          "symbol_index": 355,
          "accessor": "DTTR_PCDOGS_F_Menu_HandleOptionsLogic",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_HANDLE_OPTIONS_LOGIC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_HANDLE_OPTIONS_LOGIC"
        }
      }
    },
    "Menu_HandleOptionsLogic_AudioMenuSoundEffect": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831710,
            "rva": 637406,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840606,
            "rva": 646302,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840590,
            "rva": 646286,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 9,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 539,
          "symbol_index": 539,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_AudioMenuSoundEffect",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_AUDIO_MENU_SOUND_EFFECT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_AUDIO_MENU_SOUND_EFFECT"
        }
      }
    },
    "Menu_HandleOptionsLogic_BackupData": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831592,
            "rva": 637288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840488,
            "rva": 646184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840472,
            "rva": 646168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 169,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t[0x6c]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 169,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Editable options/config backup block copied before controls remapping and passed to Config_SaveSettingsToINI.",
        "sdk": {
          "id": 530,
          "symbol_index": 530,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_BackupData",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_BACKUP_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_BACKUP_DATA"
        }
      }
    },
    "Menu_HandleOptionsLogic_Column": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831940,
            "rva": 637636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1879426910,
            "rva": 1875232606,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1610991454,
            "rva": 1606797150,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 225,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 225,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 225,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Options/control-remap column cursor dword used by Menu_HandleOptionsLogic.",
        "sdk": {
          "id": 595,
          "symbol_index": 595,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_Column",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_COLUMN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_COLUMN"
        }
      }
    },
    "Menu_HandleOptionsLogic_DisplayMenuSetting": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506976,
            "rva": 2312672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1468337932,
            "rva": 1464143628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1468337932,
            "rva": 1464143628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 895,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 895,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Saved display/detail setting byte from pcdogs.ini; clamped to 0..10 before being applied.",
        "sdk": {
          "id": 802,
          "symbol_index": 802,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_DisplayMenuSetting",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_DISPLAY_MENU_SETTING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_DISPLAY_MENU_SETTING"
        }
      }
    },
    "Menu_HandleOptionsLogic_InputControllerHammerheadButtons": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507384,
            "rva": 2313080,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 340,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1156294131,
            "rva": 1152099827,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 340,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1156294131,
            "rva": 1152099827,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 340,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 340,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t[10]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 340,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Ten adjacent Hammerhead button preset dwords inside a controller profile record.",
        "sdk": {
          "id": 827,
          "symbol_index": 827,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_InputControllerHammerheadButtons",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_INPUT_CONTROLLER_HAMMERHEAD_BUTTONS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_INPUT_CONTROLLER_HAMMERHEAD_BUTTONS"
        }
      }
    },
    "Menu_HandleOptionsLogic_InputGamepadMappings": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831648,
            "rva": 637344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840544,
            "rva": 646240,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840528,
            "rva": 646224,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 154,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 154,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First entry/base of the player-2/gamepad binding range inside options_menu_backup_data. Options UI uses 10 gamepad-side entries.",
        "sdk": {
          "id": 532,
          "symbol_index": 532,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_InputGamepadMappings",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_INPUT_GAMEPAD_MAPPINGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_INPUT_GAMEPAD_MAPPINGS"
        }
      }
    },
    "Menu_HandleOptionsLogic_InputKeyboardMappings": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831596,
            "rva": 637292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 1061,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2231682179,
            "rva": 2227487875,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 1061,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2231682179,
            "rva": 2227487875,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 1061,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 1061,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 1061,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First entry/base of the player-1/keyboard binding range inside options_menu_backup_data. Options UI compares 11 keyboard-side entries.",
        "sdk": {
          "id": 531,
          "symbol_index": 531,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_InputKeyboardMappings",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_INPUT_KEYBOARD_MAPPINGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_INPUT_KEYBOARD_MAPPINGS"
        }
      }
    },
    "Menu_HandleOptionsLogic_InputMenuButtonRemappingActive": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831948,
            "rva": 637644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 855656925,
            "rva": 851462621,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 855656925,
            "rva": 851462621,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 515,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 515,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Control-remapping active/latch dword in the options submenu state cluster.",
        "sdk": {
          "id": 597,
          "symbol_index": 597,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_InputMenuButtonRemappingActive",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_INPUT_MENU_BUTTON_REMAPPING_ACTIVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_INPUT_MENU_BUTTON_REMAPPING_ACTIVE"
        }
      }
    },
    "Menu_HandleOptionsLogic_InputMenuControlsButtonIndex": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831898,
            "rva": 637594,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840802,
            "rva": 646498,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840786,
            "rva": 646482,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 159,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 159,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int16_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 159,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Second two-byte controls prompt descriptor filled by Menu_RenderButtonPrompt for duplicate/conflict checks.",
        "sdk": {
          "id": 579,
          "symbol_index": 579,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_InputMenuControlsButtonIndex",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_INPUT_MENU_CONTROLS_BUTTON_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_INPUT_MENU_CONTROLS_BUTTON_INDEX"
        }
      }
    },
    "Menu_HandleOptionsLogic_InputMenuControlsKeyIndex": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831896,
            "rva": 637592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840800,
            "rva": 646496,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840784,
            "rva": 646480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 164,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int16_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 164,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Two-byte controls prompt descriptor filled by Menu_RenderButtonPrompt.",
        "sdk": {
          "id": 578,
          "symbol_index": 578,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_InputMenuControlsKeyIndex",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_INPUT_MENU_CONTROLS_KEY_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_INPUT_MENU_CONTROLS_KEY_INDEX"
        }
      }
    },
    "Menu_HandleOptionsLogic_OptionValueScratch": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831056,
            "rva": 636752,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839696,
            "rva": 645392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839680,
            "rva": 645376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 149,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Options-menu local value used by Menu_HandleOptionsLogic.",
        "sdk": {
          "id": 522,
          "symbol_index": 522,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_OptionValueScratch",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_OPTION_VALUE_SCRATCH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_OPTION_VALUE_SCRATCH"
        }
      }
    },
    "Menu_HandleOptionsLogic_State": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831952,
            "rva": 637648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 327,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1,
            "rva": -4194303,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 327,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1,
            "rva": -4194303,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 327,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 327,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 327,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Auxiliary options-menu UI state dword.",
        "sdk": {
          "id": 598,
          "symbol_index": 598,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_State",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_STATE"
        }
      }
    },
    "Menu_HandleOptionsLogic_SubState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831960,
            "rva": 637656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840816,
            "rva": 646512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840800,
            "rva": 646496,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 0,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Options/control-remap substate dword read at Menu_HandleOptionsLogic entry.",
        "sdk": {
          "id": 600,
          "symbol_index": 600,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_SubState",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_SUB_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_SUB_STATE"
        }
      }
    },
    "Menu_HandleOptionsLogic_UIState5": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831956,
            "rva": 637652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840812,
            "rva": 646508,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840796,
            "rva": 646492,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 46,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 46,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Auxiliary options-menu UI state dword read by Menu_HandleOptionsLogic.",
        "sdk": {
          "id": 599,
          "symbol_index": 599,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleOptionsLogic_UIState5",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_OPTIONS_LOGIC_UI_STATE5",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_OPTIONS_LOGIC_UI_STATE5"
        }
      }
    },
    "Menu_HandleSaveGameLogic": {
      "function": {
        "analysis": {
          "en": {
            "address": 4363520,
            "rva": 169216,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_Buffer"
                },
                "instr_offset": 792,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_DirtyFlag"
                },
                "instr_offset": 433,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_OperationResult"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_SlotValidFlags"
                },
                "instr_offset": 316,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_BuildCompletionTable"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 833,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 657,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 745,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1413,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4366672,
            "rva": 172368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_Buffer"
                },
                "instr_offset": 792,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_DirtyFlag"
                },
                "instr_offset": 433,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_OperationResult"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_SlotValidFlags"
                },
                "instr_offset": 316,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_BuildCompletionTable"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 833,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 657,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 745,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1413,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4366672,
            "rva": 172368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_Buffer"
                },
                "instr_offset": 792,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_DirtyFlag"
                },
                "instr_offset": 433,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_OperationResult"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_HandleSaveGameLogic_SlotValidFlags"
                },
                "instr_offset": 316,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_BuildCompletionTable"
                },
                "instr_offset": 828,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 833,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 657,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 745,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1413,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "out_result",
              "type": "char*"
            },
            {
              "name": "selected_slot",
              "type": "int32_t"
            },
            {
              "name": "allow_save",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleSaveGameLogic_Buffer"
            },
            "instr_offset": 792,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleSaveGameLogic_SlotValidFlags"
            },
            "instr_offset": 316,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleSaveGameLogic_OperationResult"
            },
            "instr_offset": 147,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_HandleSaveGameLogic_DirtyFlag"
            },
            "instr_offset": 433,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? 84 C0 74 27 E8 ??",
          "match_offset": -16
        },
        "docs": "Advance the save/load menu state machine, update outResult[0..2], and start or poll save-game file operations over the 0x1dc save-file span. Returns the selected level id through the public result.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 352,
          "symbol_index": 352,
          "accessor": "DTTR_PCDOGS_F_Menu_HandleSaveGameLogic",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_HANDLE_SAVE_GAME_LOGIC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_HANDLE_SAVE_GAME_LOGIC"
        }
      }
    },
    "Menu_HandleSaveGameLogic_Buffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831128,
            "rva": 636824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 792,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839768,
            "rva": 645464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 792,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839752,
            "rva": 645448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 792,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleSaveGameLogic"
            },
            "instr_offset": 792,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Save_GameSlot",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleSaveGameLogic",
          "instr_offset": 792,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First save-slot record immediately after the Save_GameData header. Native file operations cover storage, consistent with five slot-sized records.",
        "sdk": {
          "id": 528,
          "symbol_index": 528,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleSaveGameLogic_Buffer",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_SAVE_GAME_LOGIC_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_SAVE_GAME_LOGIC_BUFFER"
        }
      }
    },
    "Menu_HandleSaveGameLogic_DirtyFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831887,
            "rva": 637583,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 433,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840791,
            "rva": 646487,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 433,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840775,
            "rva": 646471,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 433,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleSaveGameLogic"
            },
            "instr_offset": 433,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleSaveGameLogic",
          "instr_offset": 433,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Async save dirty/completion byte set while save-slot data is copied and operation 9 is queued.",
        "sdk": {
          "id": 575,
          "symbol_index": 575,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleSaveGameLogic_DirtyFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_SAVE_GAME_LOGIC_DIRTY_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_SAVE_GAME_LOGIC_DIRTY_FLAG"
        }
      }
    },
    "Menu_HandleSaveGameLogic_OperationResult": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831883,
            "rva": 637579,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840787,
            "rva": 646483,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840771,
            "rva": 646467,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 147,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleSaveGameLogic"
            },
            "instr_offset": 147,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleSaveGameLogic",
          "instr_offset": 147,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Save operation result/status byte written by Menu_HandleSaveGameLogic.",
        "sdk": {
          "id": 571,
          "symbol_index": 571,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleSaveGameLogic_OperationResult",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_SAVE_GAME_LOGIC_OPERATION_RESULT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_SAVE_GAME_LOGIC_OPERATION_RESULT"
        }
      }
    },
    "Menu_HandleSaveGameLogic_SlotValidFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831129,
            "rva": 636825,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 316,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839769,
            "rva": 645465,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 316,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839753,
            "rva": 645449,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 316,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleSaveGameLogic"
            },
            "instr_offset": 316,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleSaveGameLogic",
          "instr_offset": 316,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First save-slot valid byte at Save_GameSlot+1; Save_SaveGameToSlot sets saveSlots[slotIndex].is_valid to 1.",
        "sdk": {
          "id": 529,
          "symbol_index": 529,
          "accessor": "DTTR_PCDOGS_D_Menu_HandleSaveGameLogic_SlotValidFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_HANDLE_SAVE_GAME_LOGIC_SLOT_VALID_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_HANDLE_SAVE_GAME_LOGIC_SLOT_VALID_FLAGS"
        }
      }
    },
    "Menu_HandleSelection": {
      "function": {
        "analysis": {
          "en": {
            "address": 4373264,
            "rva": 178960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FadeInMusic"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuTransition"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 825,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4376960,
            "rva": 182656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 825,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4376928,
            "rva": 182624,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 825,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "target_menu",
              "type": "int32_t",
              "docs": "Menu/state id or sentinel: -1 skips transition, 1 resumes music, and 3 restores the stored fade target."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 15 ?? ?? ?? ?? 33 C0 A2",
          "match_offset": 0
        },
        "docs": "Clears transient menu/input state, handles special audio-resume targets, or transitions to targetMenu.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 363,
          "symbol_index": 363,
          "accessor": "DTTR_PCDOGS_F_Menu_HandleSelection",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_HANDLE_SELECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_HANDLE_SELECTION"
        }
      }
    },
    "Menu_IsInGame": {
      "function": {
        "analysis": {
          "en": {
            "address": 4360768,
            "rva": 166464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 417,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A0 ?? ?? ?? ?? 3C 0B 74 07 3C 0C 74 03 33 C0 C3 B8 01 00 00 00 C3",
          "match_offset": 0
        },
        "docs": "EN-only standalone helper used by Menu_UpdatePauseMenu; returns true when menu_state is 11 or 12, the active in-level states used by pause/save UI paths. EU/SC use a different inlined/nearby state check and omit this exact helper body.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 340,
          "symbol_index": 340,
          "accessor": "DTTR_PCDOGS_F_Menu_IsInGame",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_IS_IN_GAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_IS_IN_GAME"
        }
      }
    },
    "Menu_LevelProgressInfo": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "level_puppy_count",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "level_bone_count",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "player_bone_count",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "player_lives",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Menu_LevelProgressInfo"
        }
      }
    },
    "Menu_LoadState": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507278,
            "rva": 2312974,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518542,
            "rva": 2324238,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517966,
            "rva": 2323662,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_CleanupResourceGameState"
            },
            "instr_offset": 29,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "PKG_CleanupResourceGameState",
          "instr_offset": 29,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Top-level menu/load dispatch state byte used by Level_Load, UI_Update, PKG_CleanupResourceGameState, and transition helpers.",
        "sdk": {
          "id": 688,
          "symbol_index": 688,
          "accessor": "DTTR_PCDOGS_D_Menu_LoadState",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_LOAD_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_LOAD_STATE"
        }
      }
    },
    "Menu_LoadingFadeDelay": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832008,
            "rva": 637704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840912,
            "rva": 646608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840896,
            "rva": 646592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "UI_Update"
            },
            "instr_offset": 52,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "UI_Update",
          "instr_offset": 52,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Countdown used by the menu/load transition state machine before advancing loading fade steps.",
        "sdk": {
          "id": 617,
          "symbol_index": 617,
          "accessor": "DTTR_PCDOGS_D_Menu_LoadingFadeDelay",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_LOADING_FADE_DELAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_LOADING_FADE_DELAY"
        }
      }
    },
    "Menu_PauseTransitionTimer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831588,
            "rva": 637284,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ResetState"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 210,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840228,
            "rva": 645924,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ResetState"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 210,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840212,
            "rva": 645908,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ResetState"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 210,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdatePauseMenu"
            },
            "instr_offset": 210,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Menu_ResetState"
            },
            "instr_offset": 2,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 518,
          "symbol_index": 518,
          "accessor": "DTTR_PCDOGS_D_Menu_PauseTransitionTimer",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PAUSE_TRANSITION_TIMER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PAUSE_TRANSITION_TIMER"
        }
      }
    },
    "Menu_ProcessMenuState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4369184,
            "rva": 174880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_Context"
                },
                "instr_offset": 927,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_DispatchTable"
                },
                "instr_offset": 177,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_DisplayMenuFlags"
                },
                "instr_offset": 565,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_FadeCounter"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_FadeCounter"
                },
                "instr_offset": 1980,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_GradientColorValue"
                },
                "instr_offset": 2531,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_InputToggleMaskP1"
                },
                "instr_offset": 418,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_NameEntryActive"
                },
                "instr_offset": 2122,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_NameEntryColumn"
                },
                "instr_offset": 2094,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_OptionIndex"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_PostTransitionAction"
                },
                "instr_offset": 120,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_SkipBackgroundRender"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_State"
                },
                "instr_offset": 160,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_StoredFadeLevel"
                },
                "instr_offset": 2441,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_TransitionDelay"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_Selection"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FadeOutMusic"
                },
                "instr_offset": 2419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 863,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PauseAllSounds"
                },
                "instr_offset": 2447,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 3991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 3999,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 993,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 1847,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 2433,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 2492,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 3937,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 587,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 2512,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 3929,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 2497,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 2131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 377,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 2345,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 2393,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 745,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 1413,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 825,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 1627,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 651,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 2825,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 2712,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 3872,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 2639,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 2664,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 2689,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 2750,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 1127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 1257,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2861,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2998,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 3183,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 3263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 3339,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 3780,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderButtonPrompts"
                },
                "instr_offset": 2733,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 2908,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3812,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 2502,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 182,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4372880,
            "rva": 178576,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_Context"
                },
                "instr_offset": 927,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_DispatchTable"
                },
                "instr_offset": 177,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_DisplayMenuFlags"
                },
                "instr_offset": 565,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_FadeCounter"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_FadeCounter"
                },
                "instr_offset": 1980,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_GradientColorValue"
                },
                "instr_offset": 2531,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_InputToggleMaskP1"
                },
                "instr_offset": 418,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_NameEntryActive"
                },
                "instr_offset": 2122,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_NameEntryColumn"
                },
                "instr_offset": 2094,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_OptionIndex"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_PostTransitionAction"
                },
                "instr_offset": 120,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_SkipBackgroundRender"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_State"
                },
                "instr_offset": 160,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_StoredFadeLevel"
                },
                "instr_offset": 2441,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_TransitionDelay"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_Selection"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FadeOutMusic"
                },
                "instr_offset": 2419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 863,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PauseAllSounds"
                },
                "instr_offset": 2447,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 3991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 3999,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 993,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 1847,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 2433,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 2492,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 2512,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 3929,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 2497,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 2131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 377,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 2345,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 2393,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 745,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 1413,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 825,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 1627,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 651,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 2825,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 2712,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 2639,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 2664,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 2689,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 2750,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 1127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 1257,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 2908,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3812,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4372848,
            "rva": 178544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_Context"
                },
                "instr_offset": 927,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_DispatchTable"
                },
                "instr_offset": 177,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_DisplayMenuFlags"
                },
                "instr_offset": 565,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_FadeCounter"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_FadeCounter"
                },
                "instr_offset": 1980,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_GradientColorValue"
                },
                "instr_offset": 2531,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_InputToggleMaskP1"
                },
                "instr_offset": 418,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_NameEntryActive"
                },
                "instr_offset": 2122,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_NameEntryColumn"
                },
                "instr_offset": 2094,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_OptionIndex"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_PostTransitionAction"
                },
                "instr_offset": 120,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_SkipBackgroundRender"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_State"
                },
                "instr_offset": 160,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_StoredFadeLevel"
                },
                "instr_offset": 2441,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuState_TransitionDelay"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_Selection"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FadeOutMusic"
                },
                "instr_offset": 2419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 863,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PauseAllSounds"
                },
                "instr_offset": 2447,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 3991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 3999,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 993,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 1847,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 2433,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_BackupSettings"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 2492,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 2512,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 3929,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateScreenFade"
                },
                "instr_offset": 2497,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 2131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 377,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 2345,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 2393,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 745,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 1413,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 825,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 1627,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 651,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 2825,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 2712,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 2639,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 2664,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 2689,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 2750,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 1127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 1257,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2861,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2998,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 3183,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 3263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 3339,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 3780,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 2908,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 3812,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_DispatchTable"
            },
            "instr_offset": 177,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_State"
            },
            "instr_offset": 160,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_Selection"
            },
            "instr_offset": 210,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_SkipBackgroundRender"
            },
            "instr_offset": 592,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_DisplayMenuFlags"
            },
            "instr_offset": 565,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_TransitionDelay"
            },
            "instr_offset": 111,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_PostTransitionAction"
            },
            "instr_offset": 120,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_Context"
            },
            "instr_offset": 927,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_FadeCounter"
            },
            "instr_offset": 1980,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_FadeCounter"
            },
            "instr_offset": 91,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_StoredFadeLevel"
            },
            "instr_offset": 2441,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_OptionIndex"
            },
            "instr_offset": 254,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_NameEntryActive"
            },
            "instr_offset": 2122,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_NameEntryColumn"
            },
            "instr_offset": 2094,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_InputToggleMaskP1"
            },
            "instr_offset": 418,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuState_GradientColorValue"
            },
            "instr_offset": 2531,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 08 53 55 56 57 E8 ??",
          "match_offset": 0
        },
        "docs": "Processes the active menu state and returns nonzero when menu handling consumes/skips the normal frame path.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 362,
          "symbol_index": 362,
          "accessor": "DTTR_PCDOGS_F_Menu_ProcessMenuState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_PROCESS_MENU_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_PROCESS_MENU_STATE"
        }
      }
    },
    "Menu_ProcessMenuState_Context": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831712,
            "rva": 637408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 927,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840608,
            "rva": 646304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 927,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840592,
            "rva": 646288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 927,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 927,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 541,
          "symbol_index": 541,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_Context",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_CONTEXT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_CONTEXT"
        }
      }
    },
    "Menu_ProcessMenuState_DispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4373200,
            "rva": 178896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 177,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4376896,
            "rva": 182592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 177,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4376864,
            "rva": 182560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 177,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 177,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_ProcessMenuState",
          "instr_offset": 177,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Thirteen-entry uint32_t jump table used by Menu_ProcessMenuState for menu state values 1..13.",
        "sdk": {
          "id": 48,
          "symbol_index": 48,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_DispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_DISPATCH_TABLE"
        }
      }
    },
    "Menu_ProcessMenuState_DisplayMenuFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831708,
            "rva": 637404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 565,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840604,
            "rva": 646300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 565,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840588,
            "rva": 646284,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 565,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 565,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 537,
          "symbol_index": 537,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_DisplayMenuFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_DISPLAY_MENU_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_DISPLAY_MENU_FLAGS"
        }
      }
    },
    "Menu_ProcessMenuState_FadeCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831713,
            "rva": 637409,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1980,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840609,
            "rva": 646305,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1980,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840593,
            "rva": 646289,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1980,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 1980,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 91,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 542,
          "symbol_index": 542,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_FadeCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_FADE_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_FADE_COUNTER"
        }
      }
    },
    "Menu_ProcessMenuState_GradientColorValue": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507877,
            "rva": 2313573,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2531,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6519141,
            "rva": 2324837,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2531,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6518565,
            "rva": 2324261,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2531,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 2531,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 834,
          "symbol_index": 834,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_GradientColorValue",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_GRADIENT_COLOR_VALUE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_GRADIENT_COLOR_VALUE"
        }
      }
    },
    "Menu_ProcessMenuState_InputToggleMaskP1": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505528,
            "rva": 2311224,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 418,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515768,
            "rva": 2321464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 418,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515192,
            "rva": 2320888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 418,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 418,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 745,
          "symbol_index": 745,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_InputToggleMaskP1",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_INPUT_TOGGLE_MASK_P1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_INPUT_TOGGLE_MASK_P1"
        }
      }
    },
    "Menu_ProcessMenuState_NameEntryActive": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831719,
            "rva": 637415,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2122,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840615,
            "rva": 646311,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2122,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840599,
            "rva": 646295,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2122,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 2122,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 545,
          "symbol_index": 545,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_NameEntryActive",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_NAME_ENTRY_ACTIVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_NAME_ENTRY_ACTIVE"
        }
      }
    },
    "Menu_ProcessMenuState_NameEntryColumn": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831721,
            "rva": 637417,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2094,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840617,
            "rva": 646313,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2094,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840601,
            "rva": 646297,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2094,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 2094,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 547,
          "symbol_index": 547,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_NameEntryColumn",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_NAME_ENTRY_COLUMN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_NAME_ENTRY_COLUMN"
        }
      }
    },
    "Menu_ProcessMenuState_OptionIndex": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831718,
            "rva": 637414,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840614,
            "rva": 646310,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840598,
            "rva": 646294,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 254,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 544,
          "symbol_index": 544,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_OptionIndex",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_OPTION_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_OPTION_INDEX"
        }
      }
    },
    "Menu_ProcessMenuState_PostTransitionAction": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831711,
            "rva": 637407,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 120,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840607,
            "rva": 646303,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 120,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840591,
            "rva": 646287,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 120,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 120,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 540,
          "symbol_index": 540,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_PostTransitionAction",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_POST_TRANSITION_ACTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_POST_TRANSITION_ACTION"
        }
      }
    },
    "Menu_ProcessMenuState_SkipBackgroundRender": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831707,
            "rva": 637403,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840603,
            "rva": 646299,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840587,
            "rva": 646283,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 592,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 536,
          "symbol_index": 536,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_SkipBackgroundRender",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_SKIP_BACKGROUND_RENDER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_SKIP_BACKGROUND_RENDER"
        }
      }
    },
    "Menu_ProcessMenuState_State": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831704,
            "rva": 637400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 160,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840600,
            "rva": 646296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 160,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840584,
            "rva": 646280,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 160,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 160,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 534,
          "symbol_index": 534,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_State",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_STATE"
        }
      }
    },
    "Menu_ProcessMenuState_StoredFadeLevel": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831716,
            "rva": 637412,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2441,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840612,
            "rva": 646308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2441,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840596,
            "rva": 646292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2441,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 2441,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 543,
          "symbol_index": 543,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_StoredFadeLevel",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_STORED_FADE_LEVEL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_STORED_FADE_LEVEL"
        }
      }
    },
    "Menu_ProcessMenuState_TransitionDelay": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831709,
            "rva": 637405,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840605,
            "rva": 646301,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840589,
            "rva": 646285,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 111,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 538,
          "symbol_index": 538,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuState_TransitionDelay",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_STATE_TRANSITION_DELAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_STATE_TRANSITION_DELAY"
        }
      }
    },
    "Menu_ProcessMenuTransition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4378160,
            "rva": 183856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuTransition_LevelIndex"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuTransition_SkipTitleScreen"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetGameHighestWorld"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSelection"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuTransition_LevelIndex"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuTransition_SkipTitleScreen"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuTransition_LevelIndex"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessMenuTransition_SkipTitleScreen"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "target_menu",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuTransition_SkipTitleScreen"
            },
            "instr_offset": 143,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessMenuTransition_LevelIndex"
            },
            "instr_offset": 87,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "60 85 F6 75 ?? 57 E8 ??",
          "match_offset": -33
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 385,
          "symbol_index": 385,
          "accessor": "DTTR_PCDOGS_F_Menu_ProcessMenuTransition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_PROCESS_MENU_TRANSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_PROCESS_MENU_TRANSITION"
        }
      }
    },
    "Menu_ProcessMenuTransition_LevelIndex": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507280,
            "rva": 2312976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuTransition"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuTransition"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuTransition"
                },
                "instr_offset": 87,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuTransition"
            },
            "instr_offset": 87,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int16_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_ProcessMenuTransition",
          "instr_offset": 87,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Menu/load level index. Cross-check against player_current_level_id before using it as live runtime state.",
        "sdk": {
          "id": 823,
          "symbol_index": 823,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuTransition_LevelIndex",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_TRANSITION_LEVEL_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_TRANSITION_LEVEL_INDEX"
        }
      }
    },
    "Menu_ProcessMenuTransition_SkipTitleScreen": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832012,
            "rva": 637708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuTransition"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuTransition"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuTransition"
                },
                "instr_offset": 143,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuTransition"
            },
            "instr_offset": 143,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 618,
          "symbol_index": 618,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessMenuTransition_SkipTitleScreen",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_MENU_TRANSITION_SKIP_TITLE_SCREEN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_MENU_TRANSITION_SKIP_TITLE_SCREEN"
        }
      }
    },
    "Menu_ProcessNameEntryInput": {
      "function": {
        "analysis": {
          "en": {
            "address": 4373824,
            "rva": 179520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessNameEntryInput_Charset"
                },
                "instr_offset": 55,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1627,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4377520,
            "rva": 183216,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessNameEntryInput_Charset"
                },
                "instr_offset": 55,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1627,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4377488,
            "rva": 183184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_ProcessNameEntryInput_Charset"
                },
                "instr_offset": 55,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1627,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_ProcessNameEntryInput_Charset"
            },
            "instr_offset": 55,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A0 ?? ?? ?? ?? 53 56 3C 01 57 0F 85 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 366,
          "symbol_index": 366,
          "accessor": "DTTR_PCDOGS_F_Menu_ProcessNameEntryInput",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_PROCESS_NAME_ENTRY_INPUT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_PROCESS_NAME_ENTRY_INPUT"
        }
      }
    },
    "Menu_ProcessNameEntryInput_Charset": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525744,
            "rva": 331440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 55,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533936,
            "rva": 339632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 55,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533936,
            "rva": 339632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessNameEntryInput"
                },
                "instr_offset": 55,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessNameEntryInput"
            },
            "instr_offset": 55,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 211,
          "symbol_index": 211,
          "accessor": "DTTR_PCDOGS_D_Menu_ProcessNameEntryInput_Charset",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_PROCESS_NAME_ENTRY_INPUT_CHARSET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_PROCESS_NAME_ENTRY_INPUT_CHARSET"
        }
      }
    },
    "Menu_ProcessOptionsInput": {
      "function": {
        "analysis": {
          "en": {
            "address": 4366096,
            "rva": 171792,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 602,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_IsSoundEnabled"
                },
                "instr_offset": 470,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 481,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 652,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetMusicVolume"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 391,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameCurrentLevel"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameCurrentLevel"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetSfxVolume"
                },
                "instr_offset": 419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetSfxVolume"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 500,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 519,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetRumbleSuppressFlag"
                },
                "instr_offset": 511,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 651,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4369440,
            "rva": 175136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 602,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_IsSoundEnabled"
                },
                "instr_offset": 470,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 481,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetButtonString"
                },
                "instr_offset": 2097,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetButtonString"
                },
                "instr_offset": 2247,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 652,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetMusicVolume"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 391,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameCurrentLevel"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameCurrentLevel"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetSfxVolume"
                },
                "instr_offset": 419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetSfxVolume"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 930,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 945,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 970,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 500,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 519,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetRumbleSuppressFlag"
                },
                "instr_offset": 511,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 651,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4369440,
            "rva": 175136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 602,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetGammaFromMenuSetting"
                },
                "instr_offset": 638,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_IsSoundEnabled"
                },
                "instr_offset": 470,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 481,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetButtonString"
                },
                "instr_offset": 2077,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetButtonString"
                },
                "instr_offset": 2227,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 652,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetMusicVolume"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 391,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameCurrentLevel"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameCurrentLevel"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetSfxVolume"
                },
                "instr_offset": 419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetSfxVolume"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 930,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 945,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 500,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 519,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetRumbleSuppressFlag"
                },
                "instr_offset": 511,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 723,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 792,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 970,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1060,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1280,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1294,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1414,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1446,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1478,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1510,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1539,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1582,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1665,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1737,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1827,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1919,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1972,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2037,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 651,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "out_result",
              "type": "char*",
              "docs": "Three-byte menu result buffer updated as out_result[0..2]."
            },
            {
              "name": "selected_row",
              "type": "int32_t",
              "docs": "Options-menu row being processed."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "88 4E 02 3C 03 0F 84 ??",
          "match_offset": -11
        },
        "docs": "Processes options-menu input for selected_row and updates out_result[0..2]. The public SDK return stays void.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 357,
          "symbol_index": 357,
          "accessor": "DTTR_PCDOGS_F_Menu_ProcessOptionsInput",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_PROCESS_OPTIONS_INPUT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_PROCESS_OPTIONS_INPUT"
        }
      }
    },
    "Menu_RenderButtonPrompt": {
      "function": {
        "analysis": {
          "en": {
            "address": 4364640,
            "rva": 170336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 922,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 1111,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4367904,
            "rva": 173600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetButtonString"
                },
                "instr_offset": 181,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 405,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 949,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 1155,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4367904,
            "rva": 173600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetButtonString"
                },
                "instr_offset": 181,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 405,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 949,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 1155,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "mapping_table",
              "type": "int32_t*"
            },
            {
              "name": "out_prompt_a",
              "type": "uint8_t*"
            },
            {
              "name": "out_prompt_b",
              "type": "uint8_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 8B 5C 24 0C 55 8B 6C 24 0C 56 57 8D 7D ?? 33 D2 89 7C 24 ?? 8B 37",
          "match_offset": 0
        },
        "docs": "Compares configured button-mapping rows and fills two prompt descriptors, or writes 0xff markers when no pairing is available.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 353,
          "symbol_index": 353,
          "accessor": "DTTR_PCDOGS_F_Menu_RenderButtonPrompt",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RENDER_BUTTON_PROMPT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RENDER_BUTTON_PROMPT"
        }
      }
    },
    "Menu_RenderConfirmPrompt": {
      "function": {
        "analysis": {
          "en": {
            "address": 4360400,
            "rva": 166096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderConfirmPrompt_FrameCounter"
                },
                "instr_offset": 32,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderConfirmPrompt_StringMenuBufferPtr"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 501,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4362611,
            "rva": 168307,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderConfirmPrompt_FrameCounter"
                },
                "instr_offset": 32,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderConfirmPrompt_StringMenuBufferPtr"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4362611,
            "rva": 168307,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderConfirmPrompt_FrameCounter"
                },
                "instr_offset": 32,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderConfirmPrompt_StringMenuBufferPtr"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "prompt_id",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderConfirmPrompt_FrameCounter"
            },
            "instr_offset": 32,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderConfirmPrompt_StringMenuBufferPtr"
            },
            "instr_offset": 80,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? A9 00 00 08 00 75 ?? 25 00",
          "match_offset": -17
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 338,
          "symbol_index": 338,
          "accessor": "DTTR_PCDOGS_F_Menu_RenderConfirmPrompt",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RENDER_CONFIRM_PROMPT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RENDER_CONFIRM_PROMPT"
        }
      }
    },
    "Menu_RenderConfirmPrompt_FrameCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4830977,
            "rva": 636673,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderConfirmPrompt"
                },
                "instr_offset": 32,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840756,
            "rva": 646452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderConfirmPrompt"
                },
                "instr_offset": 32,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840740,
            "rva": 646436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderConfirmPrompt"
                },
                "instr_offset": 32,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderConfirmPrompt"
            },
            "instr_offset": 32,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 517,
          "symbol_index": 517,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderConfirmPrompt_FrameCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_CONFIRM_PROMPT_FRAME_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_CONFIRM_PROMPT_FRAME_COUNTER"
        }
      }
    },
    "Menu_RenderConfirmPrompt_StringMenuBufferPtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506848,
            "rva": 2312544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderConfirmPrompt"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518112,
            "rva": 2323808,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderConfirmPrompt"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517536,
            "rva": 2323232,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderConfirmPrompt"
                },
                "instr_offset": 80,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderConfirmPrompt"
            },
            "instr_offset": 80,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 777,
          "symbol_index": 777,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderConfirmPrompt_StringMenuBufferPtr",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_CONFIRM_PROMPT_STRING_MENU_BUFFER_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_CONFIRM_PROMPT_STRING_MENU_BUFFER_PTR"
        }
      }
    },
    "Menu_RenderControlsConfiguration": {
      "function": {
        "analysis": {
          "en": {
            "address": 4366800,
            "rva": 172496,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_Accept"
                },
                "instr_offset": 807,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_Cancel"
                },
                "instr_offset": 872,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_StringFormatBuffer"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_StringFormatStringTwoStrings"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetButtonString"
                },
                "instr_offset": 1100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_GetButtonString"
                },
                "instr_offset": 1249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 253,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 319,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 407,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 421,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 513,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 546,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 609,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 652,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 941,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 996,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1030,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1063,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 267,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 494,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 527,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 560,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 593,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 694,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 837,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 902,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 955,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 1010,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 1077,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 1228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 1354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_Accept"
                },
                "instr_offset": 807,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_Cancel"
                },
                "instr_offset": 872,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_StringFormatBuffer"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_StringFormatStringTwoStrings"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_Accept"
                },
                "instr_offset": 807,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_Cancel"
                },
                "instr_offset": 872,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_StringFormatBuffer"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderControlsConfiguration_StringFormatStringTwoStrings"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderControlsConfiguration_Cancel"
            },
            "instr_offset": 872,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderControlsConfiguration_Accept"
            },
            "instr_offset": 807,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderControlsConfiguration_StringFormatStringTwoStrings"
            },
            "instr_offset": 366,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderControlsConfiguration_StringFormatBuffer"
            },
            "instr_offset": 45,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 08 53 55 56 57 6A 00 6A 00 6A 76 E8 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 358,
          "symbol_index": 358,
          "accessor": "DTTR_PCDOGS_F_Menu_RenderControlsConfiguration",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RENDER_CONTROLS_CONFIGURATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RENDER_CONTROLS_CONFIGURATION"
        }
      }
    },
    "Menu_RenderControlsConfiguration_Accept": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525844,
            "rva": 331540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 807,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 807,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 807,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderControlsConfiguration"
            },
            "instr_offset": 807,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 219,
          "symbol_index": 219,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderControlsConfiguration_Accept",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_CONTROLS_CONFIGURATION_ACCEPT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_CONTROLS_CONFIGURATION_ACCEPT"
        }
      }
    },
    "Menu_RenderControlsConfiguration_Cancel": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525836,
            "rva": 331532,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 872,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 872,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 872,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderControlsConfiguration"
            },
            "instr_offset": 872,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 218,
          "symbol_index": 218,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderControlsConfiguration_Cancel",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_CONTROLS_CONFIGURATION_CANCEL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_CONTROLS_CONFIGURATION_CANCEL"
        }
      }
    },
    "Menu_RenderControlsConfiguration_StringFormatBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4830720,
            "rva": 636416,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderControlsConfiguration"
            },
            "instr_offset": 45,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 515,
          "symbol_index": 515,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderControlsConfiguration_StringFormatBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_CONTROLS_CONFIGURATION_STRING_FORMAT_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_CONTROLS_CONFIGURATION_STRING_FORMAT_BUFFER"
        }
      }
    },
    "Menu_RenderControlsConfiguration_StringFormatStringTwoStrings": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525852,
            "rva": 331548,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderControlsConfiguration"
            },
            "instr_offset": 366,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 220,
          "symbol_index": 220,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderControlsConfiguration_StringFormatStringTwoStrings",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_CONTROLS_CONFIGURATION_STRING_FORMAT_STRING_TWO_STRINGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_CONTROLS_CONFIGURATION_STRING_FORMAT_STRING_TWO_STRINGS"
        }
      }
    },
    "Menu_RenderDifficultySelection": {
      "function": {
        "analysis": {
          "en": {
            "address": 4368336,
            "rva": 174032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderDifficultySelection_OptionEasy"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderDifficultySelection_OptionEasy"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderDifficultySelection_OptionEasy"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderDifficultySelection_OptionEasy"
            },
            "instr_offset": 62,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "04 8B E8 ?? ?? ?? ?? 68",
          "match_offset": -16
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 360,
          "symbol_index": 360,
          "accessor": "DTTR_PCDOGS_F_Menu_RenderDifficultySelection",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RENDER_DIFFICULTY_SELECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RENDER_DIFFICULTY_SELECTION"
        }
      }
    },
    "Menu_RenderDifficultySelection_OptionEasy": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525788,
            "rva": 331484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderDifficultySelection"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderDifficultySelection"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderDifficultySelection"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderDifficultySelection"
            },
            "instr_offset": 62,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 212,
          "symbol_index": 212,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderDifficultySelection_OptionEasy",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_DIFFICULTY_SELECTION_OPTION_EASY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_DIFFICULTY_SELECTION_OPTION_EASY"
        }
      }
    },
    "Menu_RenderFormattedText": {
      "function": {
        "analysis": {
          "en": {
            "address": 4376272,
            "rva": 181968,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderFormattedText_InputButtonNameBuffers"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ComputeStringWidth"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderButtonPrompts"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_RenderButtonPrompts"
                },
                "instr_offset": 126,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4380000,
            "rva": 185696,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderFormattedText_InputButtonNameBuffers"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ComputeStringWidth"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 549,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 618,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4379968,
            "rva": 185664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderFormattedText_InputButtonNameBuffers"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_ComputeStringWidth"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 549,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 618,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "x",
              "type": "int32_t"
            },
            {
              "name": "y",
              "type": "int32_t"
            },
            {
              "name": "string_id",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderFormattedText_InputButtonNameBuffers"
            },
            "instr_offset": 50,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "D8 53 E8 ?? ?? ?? ?? 8B",
          "match_offset": -21
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 371,
          "symbol_index": 371,
          "accessor": "DTTR_PCDOGS_F_Menu_RenderFormattedText",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RENDER_FORMATTED_TEXT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RENDER_FORMATTED_TEXT"
        }
      }
    },
    "Menu_RenderFormattedText_InputButtonNameBuffers": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506816,
            "rva": 2312512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518080,
            "rva": 2323776,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517504,
            "rva": 2323200,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 50,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderFormattedText"
            },
            "instr_offset": 50,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "char*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_RenderFormattedText",
          "instr_offset": 50,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First entry/base of the heap-allocated input button-name buffer pointer array.",
        "sdk": {
          "id": 712,
          "symbol_index": 712,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderFormattedText_InputButtonNameBuffers",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_FORMATTED_TEXT_INPUT_BUTTON_NAME_BUFFERS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_FORMATTED_TEXT_INPUT_BUTTON_NAME_BUFFERS"
        }
      }
    },
    "Menu_RenderMusicSelection": {
      "function": {
        "analysis": {
          "en": {
            "address": 4368192,
            "rva": 173888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ControllerHammerheadProfileName"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderStringWithFormatting"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4371840,
            "rva": 177536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ControllerHammerheadProfileName"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4371808,
            "rva": 177504,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Input_ControllerHammerheadProfileName"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 308,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Input_ControllerHammerheadProfileName"
            },
            "instr_offset": 26,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "04 8B E8 ?? ?? ?? ?? 00",
          "match_offset": -16
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 359,
          "symbol_index": 359,
          "accessor": "DTTR_PCDOGS_F_Menu_RenderMusicSelection",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RENDER_MUSIC_SELECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RENDER_MUSIC_SELECTION"
        }
      }
    },
    "Menu_RenderNameEntry": {
      "function": {
        "analysis": {
          "en": {
            "address": 4374544,
            "rva": 180240,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 338,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 468,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 700,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 849,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 356,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 486,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2825,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4378240,
            "rva": 183936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 356,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 486,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2825,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4378208,
            "rva": 183904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 338,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 468,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 700,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 849,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 356,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 486,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2825,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "cursor_pos",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "01 53 55 56 57 0F 85 ??",
          "match_offset": -9
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 367,
          "symbol_index": 367,
          "accessor": "DTTR_PCDOGS_F_Menu_RenderNameEntry",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RENDER_NAME_ENTRY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RENDER_NAME_ENTRY"
        }
      }
    },
    "Menu_RenderOptionsMenu": {
      "function": {
        "analysis": {
          "en": {
            "address": 4368512,
            "rva": 174208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderOptionsMenu_ItemDispatchTable"
                },
                "instr_offset": 259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_IsSoundEnabled"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderDifficultySelection"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderMusicSelection"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetMusicVolume"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 373,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 415,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 426,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 468,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 503,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2712,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4372208,
            "rva": 177904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderOptionsMenu_ItemDispatchTable"
                },
                "instr_offset": 259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_IsSoundEnabled"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderMusicSelection"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetMusicVolume"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2712,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4372176,
            "rva": 177872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderOptionsMenu_ItemDispatchTable"
                },
                "instr_offset": 259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_IsSoundEnabled"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderMusicSelection"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetMusicVolume"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetRumbleSuppressFlag"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 373,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 415,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 426,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 468,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 503,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2712,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "menu_id",
              "type": "int32_t"
            },
            {
              "name": "selected_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderOptionsMenu_ItemDispatchTable"
            },
            "instr_offset": 259,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 64 A1 ?? ?? ?? ?? 56",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 361,
          "symbol_index": 361,
          "accessor": "DTTR_PCDOGS_F_Menu_RenderOptionsMenu",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RENDER_OPTIONS_MENU",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RENDER_OPTIONS_MENU"
        }
      }
    },
    "Menu_RenderOptionsMenu_ItemDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4369144,
            "rva": 174840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4372840,
            "rva": 178536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4372808,
            "rva": 178504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderOptionsMenu"
            },
            "instr_offset": 259,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_RenderOptionsMenu",
          "instr_offset": 259,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Seven-entry uint32_t jump table used by Menu_RenderOptionsMenu to render options menu rows 0..6.",
        "sdk": {
          "id": 47,
          "symbol_index": 47,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderOptionsMenu_ItemDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_OPTIONS_MENU_ITEM_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_OPTIONS_MENU_ITEM_DISPATCH_TABLE"
        }
      }
    },
    "Menu_RenderSaveGame": {
      "function": {
        "analysis": {
          "en": {
            "address": 4361504,
            "rva": 167200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_Active"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_DialogState"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_LoadModeFlag"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_OperationStep"
                },
                "instr_offset": 269,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_OverwriteChoice"
                },
                "instr_offset": 308,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_Percent"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_State"
                },
                "instr_offset": 249,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_StringFormatStringAndInt"
                },
                "instr_offset": 661,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_UnloadDelayCounter"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 816,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsA"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsA"
                },
                "instr_offset": 319,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 531,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 648,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 827,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 940,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderButtonPrompts"
                },
                "instr_offset": 1066,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 459,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 918,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 1008,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 457,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3872,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_Active"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_DialogState"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_LoadModeFlag"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_OperationStep"
                },
                "instr_offset": 269,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_OverwriteChoice"
                },
                "instr_offset": 308,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_Percent"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_State"
                },
                "instr_offset": 249,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_StringFormatStringAndInt"
                },
                "instr_offset": 661,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_UnloadDelayCounter"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_Active"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_DialogState"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_LoadModeFlag"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_OperationStep"
                },
                "instr_offset": 269,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_OverwriteChoice"
                },
                "instr_offset": 308,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_Percent"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_State"
                },
                "instr_offset": 249,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_StringFormatStringAndInt"
                },
                "instr_offset": 661,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_RenderSaveGame_UnloadDelayCounter"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "slot_index",
              "type": "int32_t"
            },
            {
              "name": "y",
              "type": "int32_t"
            },
            {
              "name": "allow_save",
              "type": "int32_t",
              "docs": "Save/load mode flag; the renderer reads slot data from the global save_game_buffer."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderSaveGame_Percent"
            },
            "instr_offset": 840,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderSaveGame_StringFormatStringAndInt"
            },
            "instr_offset": 661,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderSaveGame_OperationStep"
            },
            "instr_offset": 269,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderSaveGame_LoadModeFlag"
            },
            "instr_offset": 276,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderSaveGame_Active"
            },
            "instr_offset": 24,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderSaveGame_OverwriteChoice"
            },
            "instr_offset": 308,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderSaveGame_DialogState"
            },
            "instr_offset": 197,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderSaveGame_State"
            },
            "instr_offset": 249,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_RenderSaveGame_UnloadDelayCounter"
            },
            "instr_offset": 93,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "44 24 20 1C 00 0F 84 ??",
          "match_offset": -82
        },
        "docs": "Render the save/load slot list from the global save-file buffer. The third argument is a mode flag, while the native return is render-helper status ignored by known callers.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 349,
          "symbol_index": 349,
          "accessor": "DTTR_PCDOGS_F_Menu_RenderSaveGame",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RENDER_SAVE_GAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RENDER_SAVE_GAME"
        }
      }
    },
    "Menu_RenderSaveGame_Active": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831884,
            "rva": 637580,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderSaveGame"
            },
            "instr_offset": 24,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_RenderSaveGame",
          "instr_offset": 24,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Save-menu active byte flag read by Menu_RenderSaveGame.",
        "sdk": {
          "id": 572,
          "symbol_index": 572,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderSaveGame_Active",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_SAVE_GAME_ACTIVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_SAVE_GAME_ACTIVE"
        }
      }
    },
    "Menu_RenderSaveGame_DialogState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831886,
            "rva": 637582,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderSaveGame"
            },
            "instr_offset": 197,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_RenderSaveGame",
          "instr_offset": 197,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Save/load dialog substate byte consumed by Menu_RenderSaveGame.",
        "sdk": {
          "id": 574,
          "symbol_index": 574,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderSaveGame_DialogState",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_SAVE_GAME_DIALOG_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_SAVE_GAME_DIALOG_STATE"
        }
      }
    },
    "Menu_RenderSaveGame_LoadModeFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831881,
            "rva": 637577,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderSaveGame"
            },
            "instr_offset": 276,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_RenderSaveGame",
          "instr_offset": 276,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Save/load mode byte in the save-menu state cluster.",
        "sdk": {
          "id": 570,
          "symbol_index": 570,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderSaveGame_LoadModeFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_SAVE_GAME_LOAD_MODE_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_SAVE_GAME_LOAD_MODE_FLAG"
        }
      }
    },
    "Menu_RenderSaveGame_OperationStep": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831880,
            "rva": 637576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 269,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 269,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 269,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderSaveGame"
            },
            "instr_offset": 269,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_RenderSaveGame",
          "instr_offset": 269,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Save/load async operation step byte used by Menu_RenderSaveGame, Menu_HandleSaveGameLogic, and Save_SaveGameToSlot.",
        "sdk": {
          "id": 569,
          "symbol_index": 569,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderSaveGame_OperationStep",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_SAVE_GAME_OPERATION_STEP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_SAVE_GAME_OPERATION_STEP"
        }
      }
    },
    "Menu_RenderSaveGame_OverwriteChoice": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831885,
            "rva": 637581,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 308,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 308,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 308,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderSaveGame"
            },
            "instr_offset": 308,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_RenderSaveGame",
          "instr_offset": 308,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Overwrite-confirmation choice byte in the save/load menu dialog state cluster.",
        "sdk": {
          "id": 573,
          "symbol_index": 573,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderSaveGame_OverwriteChoice",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_SAVE_GAME_OVERWRITE_CHOICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_SAVE_GAME_OVERWRITE_CHOICE"
        }
      }
    },
    "Menu_RenderSaveGame_Percent": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525820,
            "rva": 331516,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderSaveGame"
            },
            "instr_offset": 840,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 216,
          "symbol_index": 216,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderSaveGame_Percent",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_SAVE_GAME_PERCENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_SAVE_GAME_PERCENT"
        }
      }
    },
    "Menu_RenderSaveGame_State": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831888,
            "rva": 637584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 249,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 249,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 249,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderSaveGame"
            },
            "instr_offset": 249,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_RenderSaveGame",
          "instr_offset": 249,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Packed save-menu transition/countdown dword; native code accesses individual byte lanes.",
        "sdk": {
          "id": 576,
          "symbol_index": 576,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderSaveGame_State",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_SAVE_GAME_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_SAVE_GAME_STATE"
        }
      }
    },
    "Menu_RenderSaveGame_StringFormatStringAndInt": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525828,
            "rva": 331524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 661,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 661,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 661,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderSaveGame"
            },
            "instr_offset": 661,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 217,
          "symbol_index": 217,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderSaveGame_StringFormatStringAndInt",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_SAVE_GAME_STRING_FORMAT_STRING_AND_INT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_SAVE_GAME_STRING_FORMAT_STRING_AND_INT"
        }
      }
    },
    "Menu_RenderSaveGame_UnloadDelayCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505692,
            "rva": 2311388,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_RenderSaveGame"
            },
            "instr_offset": 93,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 765,
          "symbol_index": 765,
          "accessor": "DTTR_PCDOGS_D_Menu_RenderSaveGame_UnloadDelayCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_RENDER_SAVE_GAME_UNLOAD_DELAY_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_RENDER_SAVE_GAME_UNLOAD_DELAY_COUNTER"
        }
      }
    },
    "Menu_RenderSimpleOptionsA": {
      "function": {
        "analysis": {
          "en": {
            "address": 4362592,
            "rva": 168288,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 227,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 319,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "title_string_id",
              "type": "int32_t"
            },
            {
              "name": "selected_index",
              "type": "int32_t"
            },
            {
              "name": "highlight_color",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? 8B 0D ?? ?? ?? ?? 83 C4 04 50 8D 04 CD ?? ?? ?? ?? 2B C1 8D 04 80 C1 E0 02 99 F7 F9 8D",
          "match_offset": -166
        },
        "docs": "Render a lower-screen two-choice menu title plus Yes/No rows, tinting selectedIndex with highlightColor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 350,
          "symbol_index": 350,
          "accessor": "DTTR_PCDOGS_F_Menu_RenderSimpleOptionsA",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RENDER_SIMPLE_OPTIONS_A",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RENDER_SIMPLE_OPTIONS_A"
        }
      }
    },
    "Menu_RenderSimpleOptionsB": {
      "function": {
        "analysis": {
          "en": {
            "address": 4373600,
            "rva": 179296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 196,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2639,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2664,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2689,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4377296,
            "rva": 182992,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 196,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2639,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2664,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2689,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4377264,
            "rva": 182960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 196,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2639,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2664,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2689,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "title_string_id",
              "type": "int32_t"
            },
            {
              "name": "selected_index",
              "type": "int32_t"
            },
            {
              "name": "highlight_color",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 01 50 E8 ?? ?? ?? ?? 83",
          "match_offset": -13
        },
        "docs": "Render a centered two-choice menu title plus Yes/No rows, tinting selectedIndex with highlightColor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 365,
          "symbol_index": 365,
          "accessor": "DTTR_PCDOGS_F_Menu_RenderSimpleOptionsB",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RENDER_SIMPLE_OPTIONS_B",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RENDER_SIMPLE_OPTIONS_B"
        }
      }
    },
    "Menu_ResetState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4361296,
            "rva": 166992,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_PauseTransitionTimer"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4363504,
            "rva": 169200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_PauseTransitionTimer"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4363504,
            "rva": 169200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_PauseTransitionTimer"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_PauseTransitionTimer"
            },
            "instr_offset": 2,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF FF 83 C8 FF 66 A3 ??",
          "match_offset": -15
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 347,
          "symbol_index": 347,
          "accessor": "DTTR_PCDOGS_F_Menu_ResetState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_RESET_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_RESET_STATE"
        }
      }
    },
    "Menu_Selection": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830196,
            "rva": 23635892,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 68,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841460,
            "rva": 23647156,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 68,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840884,
            "rva": 23646580,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 68,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Level_SetMenuProgressState"
            },
            "instr_offset": 68,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Menu_ProcessMenuState"
            },
            "instr_offset": 210,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 535,
          "symbol_index": 535,
          "accessor": "DTTR_PCDOGS_D_Menu_Selection",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_SELECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_SELECTION"
        }
      }
    },
    "Menu_ShutdownResources": {
      "function": {
        "analysis": {
          "en": {
            "address": 4356176,
            "rva": 161872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceHandle"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceHandle"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4358304,
            "rva": 164000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4358304,
            "rva": 164000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? A1 ?? ?? ?? ?? 6A 00 50 E8 ?? ?? ?? ?? 8B 0D ?? ?? ?? ?? 51 E8 ?? ?? ?? ?? 8B 15 ?? ?? ?? ?? 52 E8 ?? ?? ?? ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 330,
          "symbol_index": 330,
          "accessor": "DTTR_PCDOGS_F_Menu_ShutdownResources",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_SHUTDOWN_RESOURCES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_SHUTDOWN_RESOURCES"
        }
      }
    },
    "Menu_UpdateInput": {
      "function": {
        "analysis": {
          "en": {
            "address": 4362848,
            "rva": 168544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Cancel"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_CancelHeld"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Confirm"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_ConfirmHeld"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Down"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_DownHeld"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Left"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_LeftHeld"
                },
                "instr_offset": 53,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Right"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_RightHeld"
                },
                "instr_offset": 90,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_StatePreviousP1"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Up"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_UpHeld"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 323,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 526,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4366000,
            "rva": 171696,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Cancel"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_CancelHeld"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Confirm"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_ConfirmHeld"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Down"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_DownHeld"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Left"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_LeftHeld"
                },
                "instr_offset": 53,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Right"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_RightHeld"
                },
                "instr_offset": 90,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_StatePreviousP1"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Up"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_UpHeld"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 323,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 526,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4366000,
            "rva": 171696,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Cancel"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_CancelHeld"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Confirm"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_ConfirmHeld"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Down"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_DownHeld"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Left"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_LeftHeld"
                },
                "instr_offset": 53,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Right"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_RightHeld"
                },
                "instr_offset": 90,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_StatePreviousP1"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_Up"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdateInput_UpHeld"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 294,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 323,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 478,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 526,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_Up"
            },
            "instr_offset": 18,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_Down"
            },
            "instr_offset": 23,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_Left"
            },
            "instr_offset": 13,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_Right"
            },
            "instr_offset": 8,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_Confirm"
            },
            "instr_offset": 33,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_Cancel"
            },
            "instr_offset": 28,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_UpHeld"
            },
            "instr_offset": 190,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_DownHeld"
            },
            "instr_offset": 165,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_LeftHeld"
            },
            "instr_offset": 53,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_RightHeld"
            },
            "instr_offset": 90,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_CancelHeld"
            },
            "instr_offset": 115,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_ConfirmHeld"
            },
            "instr_offset": 140,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdateInput_StatePreviousP1"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8A 0D ?? ?? ?? ?? 33 C0 A3 ??",
          "match_offset": 0
        },
        "docs": "Updates menu one-shot pulse dwords and held/debounce bytes from player-1 input and keyboard state.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 351,
          "symbol_index": 351,
          "accessor": "DTTR_PCDOGS_F_Menu_UpdateInput",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_UPDATE_INPUT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_UPDATE_INPUT"
        }
      }
    },
    "Menu_UpdateInput_Cancel": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831928,
            "rva": 637624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840840,
            "rva": 646536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840824,
            "rva": 646520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 28,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_UpdateInput",
          "instr_offset": 28,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "One-shot menu-input cancel pulse dword in the menu input pulse cluster.",
        "sdk": {
          "id": 588,
          "symbol_index": 588,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_Cancel",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_CANCEL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_CANCEL"
        }
      }
    },
    "Menu_UpdateInput_CancelHeld": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831936,
            "rva": 637632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840848,
            "rva": 646544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840832,
            "rva": 646528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 115,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 115,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Held/debounce cancel byte in the menu input debounce cluster.",
        "sdk": {
          "id": 593,
          "symbol_index": 593,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_CancelHeld",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_CANCEL_HELD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_CANCEL_HELD"
        }
      }
    },
    "Menu_UpdateInput_Confirm": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831924,
            "rva": 637620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840836,
            "rva": 646532,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840820,
            "rva": 646516,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 33,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_UpdateInput",
          "instr_offset": 33,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "One-shot menu-input confirm pulse dword in the menu input pulse cluster.",
        "sdk": {
          "id": 587,
          "symbol_index": 587,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_Confirm",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_CONFIRM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_CONFIRM"
        }
      }
    },
    "Menu_UpdateInput_ConfirmHeld": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831937,
            "rva": 637633,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840849,
            "rva": 646545,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840833,
            "rva": 646529,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 140,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 140,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Held/debounce confirm byte in the menu input debounce cluster.",
        "sdk": {
          "id": 594,
          "symbol_index": 594,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_ConfirmHeld",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_CONFIRM_HELD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_CONFIRM_HELD"
        }
      }
    },
    "Menu_UpdateInput_Down": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831912,
            "rva": 637608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840824,
            "rva": 646520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840808,
            "rva": 646504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 23,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_UpdateInput",
          "instr_offset": 23,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "One-shot menu-input down pulse dword in the menu input pulse cluster.",
        "sdk": {
          "id": 584,
          "symbol_index": 584,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_Down",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_DOWN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_DOWN"
        }
      }
    },
    "Menu_UpdateInput_DownHeld": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831933,
            "rva": 637629,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840845,
            "rva": 646541,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840829,
            "rva": 646525,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 165,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 165,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Held/debounce down byte in the menu input debounce cluster.",
        "sdk": {
          "id": 590,
          "symbol_index": 590,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_DownHeld",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_DOWN_HELD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_DOWN_HELD"
        }
      }
    },
    "Menu_UpdateInput_Left": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831916,
            "rva": 637612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840828,
            "rva": 646524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840812,
            "rva": 646508,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 13,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_UpdateInput",
          "instr_offset": 13,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "One-shot menu-input left pulse dword in the menu input pulse cluster.",
        "sdk": {
          "id": 585,
          "symbol_index": 585,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_Left",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_LEFT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_LEFT"
        }
      }
    },
    "Menu_UpdateInput_LeftHeld": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831934,
            "rva": 637630,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 53,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840846,
            "rva": 646542,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 53,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840830,
            "rva": 646526,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 53,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 53,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Held/debounce left byte in the menu input debounce cluster.",
        "sdk": {
          "id": 591,
          "symbol_index": 591,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_LeftHeld",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_LEFT_HELD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_LEFT_HELD"
        }
      }
    },
    "Menu_UpdateInput_Right": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831920,
            "rva": 637616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840832,
            "rva": 646528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840816,
            "rva": 646512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 8,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_UpdateInput",
          "instr_offset": 8,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "One-shot menu-input right pulse dword in the menu input pulse cluster.",
        "sdk": {
          "id": 586,
          "symbol_index": 586,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_Right",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_RIGHT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_RIGHT"
        }
      }
    },
    "Menu_UpdateInput_RightHeld": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831935,
            "rva": 637631,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 90,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840847,
            "rva": 646543,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 90,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840831,
            "rva": 646527,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 90,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 90,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Held/debounce right byte in the menu input debounce cluster.",
        "sdk": {
          "id": 592,
          "symbol_index": 592,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_RightHeld",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_RIGHT_HELD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_RIGHT_HELD"
        }
      }
    },
    "Menu_UpdateInput_StatePreviousP1": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505504,
            "rva": 2311200,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515744,
            "rva": 2321440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515168,
            "rva": 2320864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "First/base byte of the two-player previous Input_State snapshot rows. Player 2 follows in the paired row, and scalar aliases overlap the row.",
        "sdk": {
          "id": 744,
          "symbol_index": 744,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_StatePreviousP1",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_STATE_PREVIOUS_P1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_STATE_PREVIOUS_P1"
        }
      }
    },
    "Menu_UpdateInput_Up": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831908,
            "rva": 637604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840820,
            "rva": 646516,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840804,
            "rva": 646500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 18,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_UpdateInput",
          "instr_offset": 18,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "One-shot menu-input up pulse dword in the menu input pulse cluster.",
        "sdk": {
          "id": 583,
          "symbol_index": 583,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_Up",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_UP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_UP"
        }
      }
    },
    "Menu_UpdateInput_UpHeld": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831932,
            "rva": 637628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840844,
            "rva": 646540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840828,
            "rva": 646524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdateInput"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdateInput"
            },
            "instr_offset": 190,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Held/debounce up byte in the menu input debounce cluster.",
        "sdk": {
          "id": 589,
          "symbol_index": 589,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdateInput_UpHeld",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_INPUT_UP_HELD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_INPUT_UP_HELD"
        }
      }
    },
    "Menu_UpdatePauseMenu": {
      "function": {
        "analysis": {
          "en": {
            "address": 4356336,
            "rva": 162032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_PauseTransitionTimer"
                },
                "instr_offset": 210,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdatePauseMenu_CheatState"
                },
                "instr_offset": 543,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdatePauseMenu_PuppyCounterUIState"
                },
                "instr_offset": 248,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdatePauseMenu_UILivesCurrentValue"
                },
                "instr_offset": 283,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_LivesCounterLastValue"
                },
                "instr_offset": 379,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_GetPlayerLevelInfo"
                },
                "instr_offset": 205,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_IsInGame"
                },
                "instr_offset": 417,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderConfirmPrompt"
                },
                "instr_offset": 501,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_UpdateBoneCounter"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_UpdatePuppyCounter"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2750,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4358464,
            "rva": 164160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_PauseTransitionTimer"
                },
                "instr_offset": 210,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdatePauseMenu_CheatState"
                },
                "instr_offset": 543,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdatePauseMenu_PuppyCounterUIState"
                },
                "instr_offset": 248,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdatePauseMenu_UILivesCurrentValue"
                },
                "instr_offset": 283,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_LivesCounterLastValue"
                },
                "instr_offset": 379,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_GetPlayerLevelInfo"
                },
                "instr_offset": 205,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_UpdateBoneCounter"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_UpdatePuppyCounter"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2750,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4358464,
            "rva": 164160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_PauseTransitionTimer"
                },
                "instr_offset": 210,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdatePauseMenu_CheatState"
                },
                "instr_offset": 543,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdatePauseMenu_PuppyCounterUIState"
                },
                "instr_offset": 248,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_UpdatePauseMenu_UILivesCurrentValue"
                },
                "instr_offset": 283,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_LivesCounterLastValue"
                },
                "instr_offset": 379,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 509,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_GetPlayerLevelInfo"
                },
                "instr_offset": 205,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_UpdateBoneCounter"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_UpdatePuppyCounter"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2750,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdatePauseMenu_CheatState"
            },
            "instr_offset": 543,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_PauseTransitionTimer"
            },
            "instr_offset": 210,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdatePauseMenu_UILivesCurrentValue"
            },
            "instr_offset": 283,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "UI_LivesCounterLastValue"
            },
            "instr_offset": 379,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_UpdatePauseMenu_PuppyCounterUIState"
            },
            "instr_offset": 248,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 66 8B 0D",
          "match_offset": 0
        },
        "docs": "Updates in-level pause/save menu state and returns a scalar handled/continue status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 332,
          "symbol_index": 332,
          "accessor": "DTTR_PCDOGS_F_Menu_UpdatePauseMenu",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MENU_UPDATE_PAUSE_MENU",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MENU_UPDATE_PAUSE_MENU"
        }
      }
    },
    "Menu_UpdatePauseMenu_CheatState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525808,
            "rva": 331504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 543,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534000,
            "rva": 339696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 543,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534000,
            "rva": 339696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 543,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdatePauseMenu"
            },
            "instr_offset": 543,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Pause-menu cheat-state selector/counter; exact input/menu ownership remains unstable.",
        "sdk": {
          "id": 215,
          "symbol_index": 215,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdatePauseMenu_CheatState",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_PAUSE_MENU_CHEAT_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_PAUSE_MENU_CHEAT_STATE"
        }
      }
    },
    "Menu_UpdatePauseMenu_PuppyCounterUIState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831904,
            "rva": 637600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 248,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840808,
            "rva": 646504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 248,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840792,
            "rva": 646488,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 248,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdatePauseMenu"
            },
            "instr_offset": 248,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 582,
          "symbol_index": 582,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdatePauseMenu_PuppyCounterUIState",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_PAUSE_MENU_PUPPY_COUNTER_UI_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_PAUSE_MENU_PUPPY_COUNTER_UI_STATE"
        }
      }
    },
    "Menu_UpdatePauseMenu_UILivesCurrentValue": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831732,
            "rva": 637428,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 283,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840628,
            "rva": 646324,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 283,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840612,
            "rva": 646308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 283,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdatePauseMenu"
            },
            "instr_offset": 283,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 550,
          "symbol_index": 550,
          "accessor": "DTTR_PCDOGS_D_Menu_UpdatePauseMenu_UILivesCurrentValue",
          "sdk_id": "DTTR_PCDOGS_DATA_MENU_UPDATE_PAUSE_MENU_UI_LIVES_CURRENT_VALUE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MENU_UPDATE_PAUSE_MENU_UI_LIVES_CURRENT_VALUE"
        }
      }
    },
    "Mesh_AccumulatedNormal": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "nx",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "ny",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "nz",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "pad_06",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_AccumulatedNormal"
        }
      }
    },
    "Mesh_CalculateVertexNormals": {
      "function": {
        "analysis": {
          "en": {
            "address": 4343760,
            "rva": 149456,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mesh_CalculateVertexNormals_NormalAccumZ"
                },
                "instr_offset": 1554,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mesh_CalculateVertexNormals_NormalAccumulatorX"
                },
                "instr_offset": 1526,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mesh_CalculateVertexNormals_NormalCount"
                },
                "instr_offset": 1512,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 627,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1063,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 731,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4345696,
            "rva": 151392,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mesh_CalculateVertexNormals_NormalAccumZ"
                },
                "instr_offset": 1554,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mesh_CalculateVertexNormals_NormalAccumulatorX"
                },
                "instr_offset": 1526,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mesh_CalculateVertexNormals_NormalCount"
                },
                "instr_offset": 1512,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 627,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1063,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 731,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4345696,
            "rva": 151392,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Mesh_CalculateVertexNormals_NormalAccumZ"
                },
                "instr_offset": 1554,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mesh_CalculateVertexNormals_NormalAccumulatorX"
                },
                "instr_offset": 1526,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Mesh_CalculateVertexNormals_NormalCount"
                },
                "instr_offset": 1512,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 627,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1063,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 731,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "polygon_refs",
              "type": "Graphics_PolygonRenderRef*"
            },
            {
              "name": "polygon_count",
              "type": "int32_t"
            },
            {
              "name": "graphics_transformed_vertices",
              "type": "Graphics_SpriteVertexData*"
            },
            {
              "name": "vertex_count",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Mesh_CalculateVertexNormals_NormalAccumulatorX"
            },
            "instr_offset": 1526,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mesh_CalculateVertexNormals_NormalAccumZ"
            },
            "instr_offset": 1554,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Mesh_CalculateVertexNormals_NormalCount"
            },
            "instr_offset": 1512,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC ?? 8B 45 08 53 56 57 8D 70 ??",
          "match_offset": 0
        },
        "docs": "Accumulates per-vertex normals for render polygon refs when graphics bit 0x1000 is active. Quads average two triangle normals, triangles touch three vertices, and callers ignore the residual return value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 283,
          "symbol_index": 283,
          "accessor": "DTTR_PCDOGS_F_Mesh_CalculateVertexNormals",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MESH_CALCULATE_VERTEX_NORMALS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MESH_CALCULATE_VERTEX_NORMALS"
        }
      }
    },
    "Mesh_CalculateVertexNormals_NormalAccumZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802636,
            "rva": 608332,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1554,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810988,
            "rva": 616684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1554,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810972,
            "rva": 616668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1554,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mesh_CalculateVertexNormals"
            },
            "instr_offset": 1554,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 491,
          "symbol_index": 491,
          "accessor": "DTTR_PCDOGS_D_Mesh_CalculateVertexNormals_NormalAccumZ",
          "sdk_id": "DTTR_PCDOGS_DATA_MESH_CALCULATE_VERTEX_NORMALS_NORMAL_ACCUM_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MESH_CALCULATE_VERTEX_NORMALS_NORMAL_ACCUM_Z"
        }
      }
    },
    "Mesh_CalculateVertexNormals_NormalAccumulatorX": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802632,
            "rva": 608328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1526,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810984,
            "rva": 616680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1526,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810968,
            "rva": 616664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1526,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mesh_CalculateVertexNormals"
            },
            "instr_offset": 1526,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 489,
          "symbol_index": 489,
          "accessor": "DTTR_PCDOGS_D_Mesh_CalculateVertexNormals_NormalAccumulatorX",
          "sdk_id": "DTTR_PCDOGS_DATA_MESH_CALCULATE_VERTEX_NORMALS_NORMAL_ACCUMULATOR_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MESH_CALCULATE_VERTEX_NORMALS_NORMAL_ACCUMULATOR_X"
        }
      }
    },
    "Mesh_CalculateVertexNormals_NormalCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802638,
            "rva": 608334,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1512,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810990,
            "rva": 616686,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1512,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810974,
            "rva": 616670,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 1512,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Mesh_CalculateVertexNormals"
            },
            "instr_offset": 1512,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 492,
          "symbol_index": 492,
          "accessor": "DTTR_PCDOGS_D_Mesh_CalculateVertexNormals_NormalCount",
          "sdk_id": "DTTR_PCDOGS_DATA_MESH_CALCULATE_VERTEX_NORMALS_NORMAL_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MESH_CALCULATE_VERTEX_NORMALS_NORMAL_COUNT"
        }
      }
    },
    "Mesh_CmdList": {
      "type": {
        "members": [
          {
            "type": "char",
            "name": "type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "char",
            "name": "flags",
            "offset": 1,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "count",
            "offset": 2,
            "doc": null
          },
          {
            "type": "Mesh_Command**",
            "name": "cmd_ptrs",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_CmdList"
        }
      }
    },
    "Mesh_Command": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 1,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "signal_id",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "progress_q12",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "limit_q12",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "payload[4]",
            "offset": 12,
            "doc": "Start of the command-specific payload bytes inside the command prefix; type 0 passes this region to Animation_ProcessController and type 1 uses the same header as a vertex-color command."
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Mesh animation/render command prefix shared by Graphics_ProcessMeshCommands and Graphics_UpdateMeshCommandFlags.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_Command"
        }
      }
    },
    "Mesh_FaceNormal": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "plane_dist",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "nx",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "ny",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "nz",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "padding",
            "offset": 10,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Mesh face-plane normal record referenced by Graphics_Polygon.face_normal; kept in the Mesh domain because it is stored with mesh polygon data.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_FaceNormal"
        }
      }
    },
    "Mesh_MaterialRef": {
      "type": {
        "members": [
          {
            "type": "Material_Table*",
            "name": "material_table_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "uv_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "color_index",
            "offset": 8,
            "doc": null
          },
          {
            "type": "void*",
            "name": "texture_data_ptr",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "blend_mode",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "render_flags",
            "offset": 20,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_MaterialRef"
        }
      }
    },
    "Mesh_Node": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "node_type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "next_sibling",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "first_child",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "parent",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "position",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "rotation",
            "offset": 22,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "reserved",
            "offset": 30,
            "doc": null
          }
        ],
        "size": 32,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_Node"
        }
      }
    },
    "Mesh_NodeExtended": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "node_type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "next_sibling",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "first_child",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "parent",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "position",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "rotation_x",
            "offset": 22,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "rotation_y",
            "offset": 24,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "node_flags_2",
            "offset": 26,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "child_ptr",
            "offset": 28,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "parent_ref",
            "offset": 32,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "sibling_ref",
            "offset": 36,
            "doc": null
          },
          {
            "type": "void*",
            "name": "aux_ptr",
            "offset": 40,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "rot_matrix[9]",
            "offset": 44,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "matrix_padding",
            "offset": 62,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "world_pos",
            "offset": 64,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "velocity",
            "offset": 76,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "material_flags",
            "offset": 88,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "bound_extent",
            "offset": 90,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "node_flags",
            "offset": 96,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding_61[1]",
            "offset": 97,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "scale_y",
            "offset": 98,
            "doc": null
          },
          {
            "type": "Mesh_RuntimePolygon*",
            "name": "polygon_data_ptr",
            "offset": 100,
            "doc": null
          },
          {
            "type": "Mesh_RuntimeVertex*",
            "name": "vertex_array_ptr",
            "offset": 104,
            "doc": null
          },
          {
            "type": "PKG_ResourceManager*",
            "name": "resource_manager_ref",
            "offset": 108,
            "doc": null
          },
          {
            "type": "Mesh_RuntimeVertex*",
            "name": "scene_vertex_data",
            "offset": 112,
            "doc": null
          },
          {
            "type": "Mesh_VertexNormal*",
            "name": "normal_source_ptr",
            "offset": 116,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "mesh_flags",
            "offset": 120,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "mesh_align_padding[3]",
            "offset": 121,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "lod_distance_threshold",
            "offset": 124,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "material_entry_array",
            "offset": 128,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "vertex_weights_data[6]",
            "offset": 132,
            "doc": null
          },
          {
            "type": "Animation_MorphTargetVertex**",
            "name": "morph_target_array_ptr",
            "offset": 156,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "parent_node_ptr",
            "offset": 160,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "render_flags",
            "offset": 164,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "linked_list_ptr",
            "offset": 168,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "bounding_box_min",
            "offset": 172,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "bounding_box_max",
            "offset": 184,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "bounding_box_radius",
            "offset": 196,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "bounding_box_flags",
            "offset": 200,
            "doc": null
          },
          {
            "type": "Mesh_Object*",
            "name": "special_mesh_data_ptr",
            "offset": 204,
            "doc": null
          },
          {
            "type": "Material_DataRef*",
            "name": "data_material_ptr",
            "offset": 208,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "sort_key",
            "offset": 212,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "material_list_ptr",
            "offset": 216,
            "doc": null
          }
        ],
        "size": 220,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_NodeExtended"
        }
      }
    },
    "Mesh_NodeFull": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "node_type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "next_sibling",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "first_child",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "parent",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "position",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "rotation",
            "offset": 22,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "material_count",
            "offset": 30,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "parent_ref",
            "offset": 32,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "sibling_ref",
            "offset": 36,
            "doc": null
          },
          {
            "type": "void*",
            "name": "aux_ptr",
            "offset": 40,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "rot_matrix[9]",
            "offset": 44,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "matrix_padding",
            "offset": 62,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "world_pos",
            "offset": 64,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "velocity",
            "offset": 76,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "material_flags",
            "offset": 88,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "bound_extent",
            "offset": 90,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "reserved_60",
            "offset": 96,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "node_flags",
            "offset": 98,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "render_mode",
            "offset": 99,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "subtype_id",
            "offset": 100,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "subtype_flags",
            "offset": 101,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "subtype_count",
            "offset": 102,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "material_array",
            "offset": 104,
            "doc": null
          },
          {
            "type": "Mesh_RuntimeVertex*",
            "name": "vertex_data",
            "offset": 108,
            "doc": null
          },
          {
            "type": "Mesh_VertexNormal*",
            "name": "normal_data",
            "offset": 112,
            "doc": null
          },
          {
            "type": "Mesh_NodeFull*",
            "name": "uv_array_ptr",
            "offset": 116,
            "doc": null
          },
          {
            "type": "Mesh_RuntimePolygon*",
            "name": "polygon_data",
            "offset": 120,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "controller_slots[4]",
            "offset": 124,
            "doc": null
          },
          {
            "type": "Animation_DataBlock*",
            "name": "animation_data",
            "offset": 128,
            "doc": null
          },
          {
            "type": "void*",
            "name": "group_list_0",
            "offset": 132,
            "doc": "First group-node fixup list head rebased by PKG_FixUpResourceObjectNodeType0Hierarchy."
          },
          {
            "type": "void*",
            "name": "group_list_1",
            "offset": 136,
            "doc": "Group-node fixup list head rebased by PKG_FixUpResourceObjectNodeType0Hierarchy."
          },
          {
            "type": "void*",
            "name": "group_list_2",
            "offset": 140,
            "doc": "Group-node fixup list head rebased by PKG_FixUpResourceObjectNodeType0Hierarchy."
          },
          {
            "type": "void*",
            "name": "group_list_3",
            "offset": 144,
            "doc": "Group-node fixup list head rebased by PKG_FixUpResourceObjectNodeType0Hierarchy."
          },
          {
            "type": "void*",
            "name": "group_list_4",
            "offset": 148,
            "doc": "Group-node fixup list head rebased by PKG_FixUpResourceObjectNodeType0Hierarchy."
          },
          {
            "type": "void*",
            "name": "group_list_5",
            "offset": 152,
            "doc": "Group-node fixup list head rebased by PKG_FixUpResourceObjectNodeType0Hierarchy."
          },
          {
            "type": "void*",
            "name": "group_linked_list_a",
            "offset": 156,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "group_reserved_a0",
            "offset": 160,
            "doc": "Reserved slot between group_linked_list_a and group_linked_list_b. PKG_FixUpResourceObjectNodeType0Hierarchy rebases the adjacent list pointers but intentionally skips this slot."
          },
          {
            "type": "void*",
            "name": "group_linked_list_b",
            "offset": 164,
            "doc": null
          }
        ],
        "size": 168,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_NodeFull"
        }
      }
    },
    "Mesh_Object": {
      "type": {
        "members": [
          {
            "type": "void*",
            "name": "node_table_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "frame_range_lo",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "frame_range_hi",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "anim_frame_start",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "anim_frame_end",
            "offset": 10,
            "doc": null
          },
          {
            "type": "void*",
            "name": "morph_target_table",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "node_count",
            "offset": 18,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved_14",
            "offset": 20,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_Object"
        }
      }
    },
    "Mesh_ObjectNodeEntry": {
      "type": {
        "members": [
          {
            "type": "void*",
            "name": "scene_node_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "index_a",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "index_b",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "index_c",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "index_d",
            "offset": 10,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_ObjectNodeEntry"
        }
      }
    },
    "Mesh_Polygon": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "material_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "vertex_indices[4]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "face_normal_ptr",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "uv_ambient_index",
            "offset": 18,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "uv_offset",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "normal_offset",
            "offset": 22,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_Polygon"
        }
      }
    },
    "Mesh_RenderNodeEntry": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "reserved_00[10]",
            "offset": 0,
            "doc": "Reserved prefix before render count and flags. PKG_FixUpResourceObjectNodeType3ComplexActorLike fixes descriptor data and the relocated tail pointer."
          },
          {
            "type": "uint8_t",
            "name": "render_entry_count",
            "offset": 10,
            "doc": "Byte count read by Scene_RenderSubMesh from the mesh render-node entry before rendering the submesh span."
          },
          {
            "type": "uint8_t",
            "name": "render_entry_flags",
            "offset": 11,
            "doc": "Render-entry flag byte tested by Scene_RenderSubMesh."
          },
          {
            "type": "Material_RefEntry",
            "name": "material_descriptor",
            "offset": 12,
            "doc": "0x0C material/command descriptor fixed by PKG_FixUpResourceSpriteEntry when PKG_FixUpResourceObjectNodeType3ComplexActorLike walks the render-node table."
          },
          {
            "type": "uint8_t",
            "name": "reserved_18[4]",
            "offset": 24,
            "doc": "Reserved gap between the 0x0C material descriptor and the relocated tail pointer; PKG_FixUpResourceObjectNodeType3ComplexActorLike's helper skips these bytes."
          },
          {
            "type": "void*",
            "name": "relocated_tail_ptr",
            "offset": 28,
            "doc": "Entry tail pointer rebased by the render-node fixup helper called from PKG_FixUpResourceObjectNodeType3ComplexActorLike."
          }
        ],
        "size": 32,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Mesh render-node entry rebased by PKG_FixUpResourceObjectNodeType3ComplexActorLike's entry-table helper.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_RenderNodeEntry"
        }
      }
    },
    "Mesh_RuntimePolygon": {
      "type": {
        "members": [
          {
            "type": "Material_TableEntry*",
            "name": "material_entry",
            "offset": 0,
            "doc": "Runtime material-table entry pointer; PKG_FixUpResourceMaterialRefs rewrites material indices to Material_TableEntry records."
          },
          {
            "type": "uint16_t",
            "name": "vertex_indices[4]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "void*",
            "name": "p_normal_plane",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "face_flags",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "uv_index",
            "offset": 18,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "reserved_14",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "normal_offset",
            "offset": 22,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_RuntimePolygon"
        }
      }
    },
    "Mesh_RuntimeVertex": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "pos",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "normal_group_index",
            "offset": 6,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "r",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "g",
            "offset": 9,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "b",
            "offset": 10,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding",
            "offset": 11,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_RuntimeVertex"
        }
      }
    },
    "Mesh_TransformEntry": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 1,
            "doc": null
          },
          {
            "type": "char",
            "name": "bone_index",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "signal_id_hi",
            "offset": 3,
            "doc": "High byte of the generic mesh-command signal_id word. Transform-specific consumers leave it reserved."
          },
          {
            "type": "uint32_t",
            "name": "resource_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "poly_start_index",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "poly_count",
            "offset": 10,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "payload_word_0_c",
            "offset": 12,
            "doc": "Variant mesh-command payload start; type 0 passes cmd to Animation_ProcessController, while other command types reinterpret the payload."
          },
          {
            "type": "int16_t",
            "name": "effect_count",
            "offset": 14,
            "doc": null
          },
          {
            "type": "Math_Vec2I16",
            "name": "scale",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_TransformEntry"
        }
      }
    },
    "Mesh_Vertex": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "y",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "z",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_Vertex"
        }
      }
    },
    "Mesh_Vertex3D": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "y",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "z",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "padding",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_Vertex3D"
        }
      }
    },
    "Mesh_Vertex3DNormal": {
      "type": {
        "members": [
          {
            "type": "float",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "float",
            "name": "y",
            "offset": 4,
            "doc": null
          },
          {
            "type": "float",
            "name": "z",
            "offset": 8,
            "doc": null
          },
          {
            "type": "float",
            "name": "nx",
            "offset": 12,
            "doc": null
          },
          {
            "type": "float",
            "name": "ny",
            "offset": 16,
            "doc": null
          },
          {
            "type": "float",
            "name": "nz",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "color",
            "offset": 24,
            "doc": null
          }
        ],
        "size": 28,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_Vertex3DNormal"
        }
      }
    },
    "Mesh_VertexColorRGB": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "r",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "g",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "b",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_VertexColorRGB"
        }
      }
    },
    "Mesh_VertexNormal": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "nx",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "ny",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "nz",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "normal_count",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_VertexNormal"
        }
      }
    },
    "Mesh_VertexUV": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "u",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "v",
            "offset": 2,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_VertexUV"
        }
      }
    },
    "Mesh_WorkingVertex": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "pos",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "bone_index",
            "offset": 6,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "normal",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "padding_0e",
            "offset": 14,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "u",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "v",
            "offset": 18,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "color",
            "offset": 20,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Mesh_WorkingVertex"
        }
      }
    },
    "MiniGame_InitializeRoundParams": {
      "function": {
        "analysis": {
          "en": {
            "address": 4265152,
            "rva": 70848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 900,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4265632,
            "rva": 71328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 900,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4265632,
            "rva": 71328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFollowupProjectile"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 900,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "position",
              "type": "Math_Vec3I32*",
              "docs": "Actor position vector passed by both known callers; unused by the callee."
            },
            {
              "name": "round_param",
              "type": "int16_t",
              "docs": "Round/mini-game parameter stored in the global word at pcdogs.exe ."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "66 8B 44 24 08 66 C7 05 ??",
          "match_offset": 0
        },
        "docs": "Initializes mini-game round globals by setting the default round counter to 10 and storing round_param.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 157,
          "symbol_index": 157,
          "accessor": "DTTR_PCDOGS_F_MiniGame_InitializeRoundParams",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MINI_GAME_INITIALIZE_ROUND_PARAMS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MINI_GAME_INITIALIZE_ROUND_PARAMS"
        }
      }
    },
    "MiniGame_SetScoreValues": {
      "function": {
        "analysis": {
          "en": {
            "address": 4265184,
            "rva": 70880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4265664,
            "rva": 71360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4265664,
            "rva": 71360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 144,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "player_1_score",
              "type": "int16_t"
            },
            {
              "name": "player_2_score",
              "type": "int16_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 66 A3 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 158,
          "symbol_index": 158,
          "accessor": "DTTR_PCDOGS_F_MiniGame_SetScoreValues",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MINI_GAME_SET_SCORE_VALUES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MINI_GAME_SET_SCORE_VALUES"
        }
      }
    },
    "Model_AdvanceAnimation": {
      "function": {
        "analysis": {
          "en": {
            "address": 4252816,
            "rva": 58512,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2440,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4253296,
            "rva": 58992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2440,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4253296,
            "rva": 58992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2440,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 03 C5 89 46 60 A1 ??",
          "match_offset": -144
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 113,
          "symbol_index": 113,
          "accessor": "DTTR_PCDOGS_F_Model_AdvanceAnimation",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MODEL_ADVANCE_ANIMATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MODEL_ADVANCE_ANIMATION"
        }
      }
    },
    "Model_FindCollisionTarget": {
      "function": {
        "analysis": {
          "en": {
            "address": 4352112,
            "rva": 157808,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 554,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 438,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4354048,
            "rva": 159744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 554,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 438,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4354048,
            "rva": 159744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 554,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorGroundCheck"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 438,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Collision_Node*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "out_polygon",
              "type": "Collision_Polygon**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 8B 4C 24 04 50 51 E8 ?? ?? ?? ?? 83",
          "match_offset": 0
        },
        "docs": "This thin wrapper forwards actor and out_polygon to Collision_FindGroundPolygonUnderActor and does not cover wall contacts.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 296,
          "symbol_index": 296,
          "accessor": "DTTR_PCDOGS_F_Model_FindCollisionTarget",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MODEL_FIND_COLLISION_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MODEL_FIND_COLLISION_TARGET"
        }
      }
    },
    "Model_ResetState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4433664,
            "rva": 239360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4438736,
            "rva": 244432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4438704,
            "rva": 244400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 8B 46 7C 50 E8 ??",
          "match_offset": -17
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 478,
          "symbol_index": 478,
          "accessor": "DTTR_PCDOGS_F_Model_ResetState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MODEL_RESET_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MODEL_RESET_STATE"
        }
      }
    },
    "Model_ResolveCollision": {
      "function": {
        "analysis": {
          "en": {
            "address": 4352144,
            "rva": 157840,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectDynamicObject"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_IsPointInsidePolygon"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4354080,
            "rva": 159776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectDynamicObject"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_IsPointInsidePolygon"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4354080,
            "rva": 159776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectDynamicObject"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_IsPointInsidePolygon"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 179,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Collision_Polygon*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 18 56 57 8B 7D 08 8B B7 E8 ??",
          "match_offset": 0
        },
        "docs": "Resolves actor collision against collision nodes, polygon arrays, and paired ground/contact state; returns the resolved contact polygon.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 297,
          "symbol_index": 297,
          "accessor": "DTTR_PCDOGS_F_Model_ResolveCollision",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MODEL_RESOLVE_COLLISION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MODEL_RESOLVE_COLLISION"
        }
      }
    },
    "Model_TransformByCollisionNode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4347536,
            "rva": 153232,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateTriangleHeight"
                },
                "instr_offset": 1399,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectDynamicObject"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 858,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4349472,
            "rva": 155168,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateTriangleHeight"
                },
                "instr_offset": 1399,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectDynamicObject"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 858,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4349472,
            "rva": 155168,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateTriangleHeight"
                },
                "instr_offset": 1399,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_DetectDynamicObject"
                },
                "instr_offset": 301,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 361,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 858,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "collision_node",
              "type": "Collision_Node*"
            },
            {
              "name": "polygon",
              "type": "Collision_Polygon*"
            },
            {
              "name": "world_pos",
              "type": "int32_t*"
            },
            {
              "name": "out_world_pos",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 30 56 8B 75 08 85 F6 0F 84 ??",
          "match_offset": 0
        },
        "docs": "Transforms worldPos into collision-node local space, solves local Y over the polygon or selected triangle, then writes outWorldPos back in world coordinates.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 290,
          "symbol_index": 290,
          "accessor": "DTTR_PCDOGS_F_Model_TransformByCollisionNode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MODEL_TRANSFORM_BY_COLLISION_NODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MODEL_TRANSFORM_BY_COLLISION_NODE"
        }
      }
    },
    "Model_UpdateAttachment": {
      "function": {
        "analysis": {
          "en": {
            "address": 4415616,
            "rva": 221312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4420672,
            "rva": 226368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4420640,
            "rva": 226336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "85 FF 89 7D FC 0F 84 ??",
          "match_offset": -16
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 442,
          "symbol_index": 442,
          "accessor": "DTTR_PCDOGS_F_Model_UpdateAttachment",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MODEL_UPDATE_ATTACHMENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MODEL_UPDATE_ATTACHMENT"
        }
      }
    },
    "Model_UpdateGroundBarycentric": {
      "function": {
        "analysis": {
          "en": {
            "address": 4346352,
            "rva": 152048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformBarycentricToWorldCoords"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2416,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4348288,
            "rva": 153984,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformBarycentricToWorldCoords"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2416,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4348288,
            "rva": 153984,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformBarycentricToWorldCoords"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2416,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 64 53 8B 5D 08 56 57 8B 83 E8 ??",
          "match_offset": 0
        },
        "docs": "Recomputes the actor's ground-contact barycentric state and returns the actor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 288,
          "symbol_index": 288,
          "accessor": "DTTR_PCDOGS_F_Model_UpdateGroundBarycentric",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MODEL_UPDATE_GROUND_BARYCENTRIC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MODEL_UPDATE_GROUND_BARYCENTRIC"
        }
      }
    },
    "Model_UpdateShadow": {
      "function": {
        "analysis": {
          "en": {
            "address": 4412368,
            "rva": 218064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildRotationFromVectors"
                },
                "instr_offset": 563,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2238,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4417424,
            "rva": 223120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildRotationFromVectors"
                },
                "instr_offset": 563,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2238,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4417392,
            "rva": 223088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildRotationFromVectors"
                },
                "instr_offset": 563,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2238,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0F 00 00 51 53 50 E8 ??",
          "match_offset": -53
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 439,
          "symbol_index": 439,
          "accessor": "DTTR_PCDOGS_F_Model_UpdateShadow",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MODEL_UPDATE_SHADOW",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MODEL_UPDATE_SHADOW"
        }
      }
    },
    "Model_UpdateTransformAndPhysics": {
      "function": {
        "analysis": {
          "en": {
            "address": 4413152,
            "rva": 218848,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Model_UpdateTransformAndPhysics_CallbackTable"
                },
                "instr_offset": 2297,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 718,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_AdvanceAnimation"
                },
                "instr_offset": 2440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 438,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 858,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateAttachment"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateGroundBarycentric"
                },
                "instr_offset": 2416,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 2238,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4418208,
            "rva": 223904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Model_UpdateTransformAndPhysics_CallbackTable"
                },
                "instr_offset": 2297,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 718,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_AdvanceAnimation"
                },
                "instr_offset": 2440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 438,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 858,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateAttachment"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateGroundBarycentric"
                },
                "instr_offset": 2416,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 2238,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4418176,
            "rva": 223872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Model_UpdateTransformAndPhysics_CallbackTable"
                },
                "instr_offset": 2297,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 718,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_AdvanceAnimation"
                },
                "instr_offset": 2440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_FindCollisionTarget"
                },
                "instr_offset": 438,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 763,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 823,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_TransformByCollisionNode"
                },
                "instr_offset": 858,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateAttachment"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateGroundBarycentric"
                },
                "instr_offset": 2416,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateShadow"
                },
                "instr_offset": 2238,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Model_UpdateTransformAndPhysics_CallbackTable"
            },
            "instr_offset": 2297,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 3B C1 74 ?? 83 3D ??",
          "match_offset": -19
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 441,
          "symbol_index": 441,
          "accessor": "DTTR_PCDOGS_F_Model_UpdateTransformAndPhysics",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MODEL_UPDATE_TRANSFORM_AND_PHYSICS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MODEL_UPDATE_TRANSFORM_AND_PHYSICS"
        }
      }
    },
    "Model_UpdateTransformAndPhysics_CallbackTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505632,
            "rva": 2311328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2297,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515872,
            "rva": 2321568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2297,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515296,
            "rva": 2320992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 2297,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Model_UpdateTransformAndPhysics"
            },
            "instr_offset": 2297,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_BehaviorCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Model_UpdateTransformAndPhysics",
          "instr_offset": 2297,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "First slot/base of the eight-slot model/physics callback vector.",
        "sdk": {
          "id": 753,
          "symbol_index": 753,
          "accessor": "DTTR_PCDOGS_D_Model_UpdateTransformAndPhysics_CallbackTable",
          "sdk_id": "DTTR_PCDOGS_DATA_MODEL_UPDATE_TRANSFORM_AND_PHYSICS_CALLBACK_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_MODEL_UPDATE_TRANSFORM_AND_PHYSICS_CALLBACK_TABLE"
        }
      }
    },
    "Movie_InitMovie": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480702,
            "rva": 286398,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488542,
            "rva": 294238,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488318,
            "rva": 294014,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": -7
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 660,
          "symbol_index": 660,
          "accessor": "DTTR_PCDOGS_F_Movie_InitMovie",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_INIT_MOVIE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_INIT_MOVIE"
        }
      }
    },
    "Movie_InitMoviePlayback": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480678,
            "rva": 286374,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 523,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488518,
            "rva": 294214,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 523,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488294,
            "rva": 293990,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 523,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": -7
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 656,
          "symbol_index": 656,
          "accessor": "DTTR_PCDOGS_F_Movie_InitMoviePlayback",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_INIT_MOVIE_PLAYBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_INIT_MOVIE_PLAYBACK"
        }
      }
    },
    "Movie_InitPlaybackMode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480690,
            "rva": 286386,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488530,
            "rva": 294226,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488306,
            "rva": 294002,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": -7
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 658,
          "symbol_index": 658,
          "accessor": "DTTR_PCDOGS_F_Movie_InitPlaybackMode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_INIT_PLAYBACK_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_INIT_PLAYBACK_MODE"
        }
      }
    },
    "Movie_InitSound": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480684,
            "rva": 286380,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 458,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488524,
            "rva": 294220,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 458,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488300,
            "rva": 293996,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 458,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": -7
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 657,
          "symbol_index": 657,
          "accessor": "DTTR_PCDOGS_F_Movie_InitSound",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_INIT_SOUND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_INIT_SOUND"
        }
      }
    },
    "Movie_InitSoundSystem": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480624,
            "rva": 286320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488464,
            "rva": 294160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488240,
            "rva": 293936,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 647,
          "symbol_index": 647,
          "accessor": "DTTR_PCDOGS_F_Movie_InitSoundSystem",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_INIT_SOUND_SYSTEM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_INIT_SOUND_SYSTEM"
        }
      }
    },
    "Movie_InitVideo": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480696,
            "rva": 286392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488536,
            "rva": 294232,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488312,
            "rva": 294008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": -7
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 659,
          "symbol_index": 659,
          "accessor": "DTTR_PCDOGS_F_Movie_InitVideo",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_INIT_VIDEO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_INIT_VIDEO"
        }
      }
    },
    "Movie_InitVideoSystem": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480630,
            "rva": 286326,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488470,
            "rva": 294166,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488246,
            "rva": 293942,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 648,
          "symbol_index": 648,
          "accessor": "DTTR_PCDOGS_F_Movie_InitVideoSystem",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_INIT_VIDEO_SYSTEM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_INIT_VIDEO_SYSTEM"
        }
      }
    },
    "Movie_MapVideo": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480672,
            "rva": 286368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488512,
            "rva": 294208,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488288,
            "rva": 293984,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": -7
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 655,
          "symbol_index": 655,
          "accessor": "DTTR_PCDOGS_F_Movie_MapVideo",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_MAP_VIDEO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_MAP_VIDEO"
        }
      }
    },
    "Movie_PlayFrame": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480708,
            "rva": 286404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488548,
            "rva": 294244,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488324,
            "rva": 294020,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": -7
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 661,
          "symbol_index": 661,
          "accessor": "DTTR_PCDOGS_F_Movie_PlayFrame",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_PLAY_FRAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_PLAY_FRAME"
        }
      }
    },
    "Movie_ReturnPlaybackMode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480654,
            "rva": 286350,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488494,
            "rva": 294190,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488270,
            "rva": 293966,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": -7
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 652,
          "symbol_index": 652,
          "accessor": "DTTR_PCDOGS_F_Movie_ReturnPlaybackMode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_RETURN_PLAYBACK_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_RETURN_PLAYBACK_MODE"
        }
      }
    },
    "Movie_ShutdownMovie": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480636,
            "rva": 286332,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488476,
            "rva": 294172,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488252,
            "rva": 293948,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 649,
          "symbol_index": 649,
          "accessor": "DTTR_PCDOGS_F_Movie_ShutdownMovie",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_SHUTDOWN_MOVIE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_SHUTDOWN_MOVIE"
        }
      }
    },
    "Movie_ShutdownSound": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480648,
            "rva": 286344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488488,
            "rva": 294184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488264,
            "rva": 293960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": -7
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 651,
          "symbol_index": 651,
          "accessor": "DTTR_PCDOGS_F_Movie_ShutdownSound",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_SHUTDOWN_SOUND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_SHUTDOWN_SOUND"
        }
      }
    },
    "Movie_ShutdownSoundSystem": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480714,
            "rva": 286410,
            "image_base": 4194304
          },
          "eu": {
            "address": 4488554,
            "rva": 294250,
            "image_base": 4194304
          },
          "sc": {
            "address": 4488330,
            "rva": 294026,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 662,
          "symbol_index": 662,
          "accessor": "DTTR_PCDOGS_F_Movie_ShutdownSoundSystem",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_SHUTDOWN_SOUND_SYSTEM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_SHUTDOWN_SOUND_SYSTEM"
        }
      }
    },
    "Movie_ShutdownVideo": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480642,
            "rva": 286338,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488482,
            "rva": 294178,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488258,
            "rva": 293954,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 650,
          "symbol_index": 650,
          "accessor": "DTTR_PCDOGS_F_Movie_ShutdownVideo",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_SHUTDOWN_VIDEO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_SHUTDOWN_VIDEO"
        }
      }
    },
    "Movie_ShutdownVideoSystem": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480720,
            "rva": 286416,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_LoadFloatFPU"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488560,
            "rva": 294256,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_LoadFloatFPU"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488336,
            "rva": 294032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_LoadFloatFPU"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 25 ?? ?? ?? ?? E8",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 663,
          "symbol_index": 663,
          "accessor": "DTTR_PCDOGS_F_Movie_ShutdownVideoSystem",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_SHUTDOWN_VIDEO_SYSTEM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_SHUTDOWN_VIDEO_SYSTEM"
        }
      }
    },
    "Movie_StartTimer": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480666,
            "rva": 286362,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 568,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488506,
            "rva": 294202,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 568,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488282,
            "rva": 293978,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 568,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "movie_handle",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": -7
        },
        "docs": "Thunk forwarding the movie handle to the movie player's start-timer entry.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 654,
          "symbol_index": 654,
          "accessor": "DTTR_PCDOGS_F_Movie_StartTimer",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_START_TIMER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_START_TIMER"
        }
      }
    },
    "Movie_StopTimer": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480660,
            "rva": 286356,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488500,
            "rva": 294196,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488276,
            "rva": 293972,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": -7
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 653,
          "symbol_index": 653,
          "accessor": "DTTR_PCDOGS_F_Movie_StopTimer",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_MOVIE_STOP_TIMER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_MOVIE_STOP_TIMER"
        }
      }
    },
    "Nav_AddCommand": {
      "function": {
        "analysis": {
          "en": {
            "address": 4209936,
            "rva": 15632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 410,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 696,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1602,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_AnimateMoveSequence"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_CenterCameraOnCell"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_HighlightPlayerPieces"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1096,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_HandleDamageResponse"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ProcessActorCollision"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpAddNavigationCommand"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4210384,
            "rva": 16080,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 410,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_AnimateMoveSequence"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_CenterCameraOnCell"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_HighlightPlayerPieces"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1096,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_HandleDamageResponse"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ProcessActorCollision"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpAddNavigationCommand"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4210384,
            "rva": 16080,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 410,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1605,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPuppyInteraction"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_AnimateMoveSequence"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_CenterCameraOnCell"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_HighlightPlayerPieces"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateCameraPositions"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Checkers_UpdateStateMachine"
                },
                "instr_offset": 1096,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_HandleDamageResponse"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_ProcessActorCollision"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpAddNavigationCommand"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "command_type",
              "type": "char"
            },
            {
              "name": "target_x",
              "type": "int16_t"
            },
            {
              "name": "target_y",
              "type": "int16_t"
            },
            {
              "name": "speed",
              "type": "int32_t"
            },
            {
              "name": "position",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 8B 54 24 04 81",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 49,
          "symbol_index": 49,
          "accessor": "DTTR_PCDOGS_F_Nav_AddCommand",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_NAV_ADD_COMMAND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_NAV_ADD_COMMAND"
        }
      }
    },
    "Nav_CalculatePolygonCenter": {
      "function": {
        "analysis": {
          "en": {
            "address": 4430784,
            "rva": 236480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4435856,
            "rva": 241552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4435824,
            "rva": 241520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "collision_node",
              "type": "Collision_Node*"
            },
            {
              "name": "polygon",
              "type": "Collision_Polygon*"
            },
            {
              "name": "out_center",
              "type": "Math_Vec3I32*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "57 F6 40 10 01 0F 84 ??",
          "match_offset": -11
        },
        "docs": "Calculates the integer center point for a collision polygon in a collision/object node.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 476,
          "symbol_index": 476,
          "accessor": "DTTR_PCDOGS_F_Nav_CalculatePolygonCenter",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_NAV_CALCULATE_POLYGON_CENTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_NAV_CALCULATE_POLYGON_CENTER"
        }
      }
    },
    "Nav_Command": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "command_type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "target_selector_a",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "target_selector_b",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "speed",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "pos",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Nav_Command"
        }
      }
    },
    "Nav_HandleDamageResponse": {
      "function": {
        "analysis": {
          "en": {
            "address": 4210080,
            "rva": 15776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_IsAirborneTarget"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4210528,
            "rva": 16224,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_IsAirborneTarget"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4210528,
            "rva": 16224,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Component_IsAirborneTarget"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 120,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "damage_component",
              "type": "Component_Instance*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 8B 5C 24 0C 55 56 57 53 E8 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 50,
          "symbol_index": 50,
          "accessor": "DTTR_PCDOGS_F_Nav_HandleDamageResponse",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_NAV_HANDLE_DAMAGE_RESPONSE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_NAV_HANDLE_DAMAGE_RESPONSE"
        }
      }
    },
    "Nav_NeighborEntry": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "packed_id",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "cost",
            "offset": 2,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Nav_NeighborEntry"
        }
      }
    },
    "Nav_Network": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "node_count",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Nav_Node*",
            "name": "nodes",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Nav_Network"
        }
      }
    },
    "Nav_Node": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I32",
            "name": "pos",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "parent_link",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "neighbor_count",
            "offset": 14,
            "doc": null
          },
          {
            "type": "Nav_PathState*",
            "name": "pathfind_state",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Nav_NeighborEntry*",
            "name": "neighbor_list",
            "offset": 20,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Nav_Node"
        }
      }
    },
    "Nav_PathState": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "cost",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "node_id",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "parent_backlink",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "step_count",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "reserved",
            "offset": 10,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Nav_PathState"
        }
      }
    },
    "Nav_ProcessPathNode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4431312,
            "rva": 237008,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1660,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 1561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 1736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 2113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FixupMapAfterInsert"
                },
                "instr_offset": 1725,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FixupMapAfterInsert"
                },
                "instr_offset": 2102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 1786,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 2151,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1284,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4436384,
            "rva": 242080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1660,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 1561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 1736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 2113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FixupMapAfterInsert"
                },
                "instr_offset": 1725,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FixupMapAfterInsert"
                },
                "instr_offset": 2102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 1786,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 2151,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1284,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4436352,
            "rva": 242048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1660,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 1561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 1736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 2113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FixupMapAfterInsert"
                },
                "instr_offset": 1725,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FixupMapAfterInsert"
                },
                "instr_offset": 2102,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 1786,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 2151,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1284,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "open_set",
              "type": "void*",
              "docs": "Internal priority/open-set handle allocated by the pathfinding queue helpers."
            },
            {
              "name": "nav_network",
              "type": "Nav_Network*",
              "docs": "Navigation network whose current node neighbors are expanded."
            },
            {
              "name": "current_state",
              "type": "Nav_PathState*",
              "docs": "Open-set state entry for the node being processed."
            },
            {
              "name": "skip_dynamic_targets",
              "type": "int32_t",
              "docs": "Nonzero skips type 4/5 dynamic target refs while expanding neighbors."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "54 C1 0E 85 D2 0F 84 ??",
          "match_offset": -29
        },
        "docs": "Expands one pathfinding node, updates neighbor costs/backlinks, and queues reachable nodes.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 477,
          "symbol_index": 477,
          "accessor": "DTTR_PCDOGS_F_Nav_ProcessPathNode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_NAV_PROCESS_PATH_NODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_NAV_PROCESS_PATH_NODE"
        }
      }
    },
    "Options_MenuSelection": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831944,
            "rva": 637640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 181,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2333963264,
            "rva": 2329768960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 181,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2333963264,
            "rva": 2329768960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 181,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleOptionsLogic"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_HandleOptionsLogic"
            },
            "instr_offset": 58,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Level_UpdateInterLevelMenu"
            },
            "instr_offset": 181,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_HandleOptionsLogic",
          "instr_offset": 58,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Selected options-menu row dword.",
        "sdk": {
          "id": 596,
          "symbol_index": 596,
          "accessor": "DTTR_PCDOGS_D_Options_MenuSelection",
          "sdk_id": "DTTR_PCDOGS_DATA_OPTIONS_MENU_SELECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_OPTIONS_MENU_SELECTION"
        }
      }
    },
    "PKG_ActorTemplate": {
      "type": {
        "members": [
          {
            "type": "Mesh_Node*",
            "name": "lod_nodes[3]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved_0c",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Animation_StateTable*",
            "name": "anim_table",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_ActorTemplate"
        }
      }
    },
    "PKG_AllocateResourceMemory": {
      "function": {
        "analysis": {
          "en": {
            "address": 4384368,
            "rva": 190064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceWithHeader"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_BuildStructure"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_CreateMap"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4389376,
            "rva": 195072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceWithHeader"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_BuildStructure"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_CreateMap"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4389344,
            "rva": 195040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceWithHeader"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Material_BuildStructure"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_CreateMap"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "size",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 85 C0 75 ?? C3 50 E8 ?? ?? ?? ?? 83 C4 04 C3",
          "match_offset": 0
        },
        "docs": "Allocates a resource-memory block with the game resource header and returns the data pointer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 401,
          "symbol_index": 401,
          "accessor": "DTTR_PCDOGS_F_PKG_AllocateResourceMemory",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_ALLOCATE_RESOURCE_MEMORY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_ALLOCATE_RESOURCE_MEMORY"
        }
      }
    },
    "PKG_AllocateResourceWithHeader": {
      "function": {
        "analysis": {
          "en": {
            "address": 4384400,
            "rva": 190096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4389408,
            "rva": 195104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4389376,
            "rva": 195072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t*",
          "params": [
            {
              "name": "size",
              "type": "int32_t",
              "docs": "Requested resource data size, excluding the hidden leading handle dword."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 56 83 C0 04 50 E8 ??",
          "match_offset": 0
        },
        "docs": "Allocates storage with a hidden leading allocation handle and returns the resource data pointer after that header; returns null if pointer lookup fails.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 402,
          "symbol_index": 402,
          "accessor": "DTTR_PCDOGS_F_PKG_AllocateResourceWithHeader",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_ALLOCATE_RESOURCE_WITH_HEADER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_ALLOCATE_RESOURCE_WITH_HEADER"
        }
      }
    },
    "PKG_CameraDef": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "camera_type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 1,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "transition_speed",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "fov_distance",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "orbit_yaw",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "orbit_pitch",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "cam_offset",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "target_offset",
            "offset": 24,
            "doc": null
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_CameraDef"
        }
      }
    },
    "PKG_CleanupFinalResourceGame": {
      "function": {
        "analysis": {
          "en": {
            "address": 4449632,
            "rva": 255328,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_Close"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4454896,
            "rva": 260592,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_Close"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4454864,
            "rva": 260560,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ShutdownSystem"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_Close"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E9",
          "match_offset": 0
        },
        "docs": "Final game shutdown chain: shuts down audio, closes the package file handle, then tail-calls PKG_ShutdownResourceGameSubsystems.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 529,
          "symbol_index": 529,
          "accessor": "DTTR_PCDOGS_F_PKG_CleanupFinalResourceGame",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_CLEANUP_FINAL_RESOURCE_GAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_CLEANUP_FINAL_RESOURCE_GAME"
        }
      }
    },
    "PKG_CleanupResourceGameState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4378080,
            "rva": 183776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_LoadState"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_CleanupResourceGameState_LevelHandle"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4382512,
            "rva": 188208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_LoadState"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_CleanupResourceGameState_LevelHandle"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 206,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetGameHighestWorld"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4382480,
            "rva": 188176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_LoadState"
                },
                "instr_offset": 29,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_CleanupResourceGameState_LevelHandle"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 206,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetGameHighestWorld"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "PKG_CleanupResourceGameState_LevelHandle"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Menu_LoadState"
            },
            "instr_offset": 29,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 53 33 DB 3B C3 74",
          "match_offset": 0
        },
        "docs": "Unloads the latched level_resource_handle when present, runs the title/menu cleanup branch, clears object/current-level state including current_level_data, and resets the current level id.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 384,
          "symbol_index": 384,
          "accessor": "DTTR_PCDOGS_F_PKG_CleanupResourceGameState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_CLEANUP_RESOURCE_GAME_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_CLEANUP_RESOURCE_GAME_STATE"
        }
      }
    },
    "PKG_CleanupResourceGameState_LevelHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831988,
            "rva": 637684,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840892,
            "rva": 646588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840876,
            "rva": 646572,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_CleanupResourceGameState"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Global latch for the completed level resource/blob handle returned by Level_LoadStateMachine; PKG_CleanupResourceGameState passes the non-null handle to Level_UnloadResources and then clears it.",
        "sdk": {
          "id": 610,
          "symbol_index": 610,
          "accessor": "DTTR_PCDOGS_D_PKG_CleanupResourceGameState_LevelHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_CLEANUP_RESOURCE_GAME_STATE_LEVEL_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_CLEANUP_RESOURCE_GAME_STATE_LEVEL_HANDLE"
        }
      }
    },
    "PKG_CleanupResourceHandle": {
      "function": {
        "analysis": {
          "en": {
            "address": 4451360,
            "rva": 257056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "resource_data",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 50 E8 ?? ?? ?? ?? 59 C3 90 90 90 90 8B",
          "match_offset": 0
        },
        "docs": "Thin wrapper around PKG_FreeResourceData for resource data pointers.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 537,
          "symbol_index": 537,
          "accessor": "DTTR_PCDOGS_F_PKG_CleanupResourceHandle",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_CLEANUP_RESOURCE_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_CLEANUP_RESOURCE_HANDLE"
        }
      }
    },
    "PKG_Close": {
      "function": {
        "analysis": {
          "en": {
            "address": 4452496,
            "rva": 258192,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4458080,
            "rva": 263776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4458096,
            "rva": 263792,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? 50 E8 ?? ?? ?? ?? 83 C4 04 C7 05 ?? ?? ?? ?? 00 00 00 00 C3 90 90 90 83",
          "match_offset": 0
        },
        "docs": "Closes the open package file handle when present and clears pkg_file_handle.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 544,
          "symbol_index": 544,
          "accessor": "DTTR_PCDOGS_F_PKG_Close",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_CLOSE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_CLOSE"
        }
      }
    },
    "PKG_CollisionFace": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "material_index",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "surface_type",
            "offset": 2,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "vertex_indices_front[3]",
            "offset": 4,
            "doc": "Storage-order vertex index run before face_flags. Native suffix order is 0, 1, 3 here; the remaining index lives after the flag bytes."
          },
          {
            "type": "uint8_t",
            "name": "face_flags",
            "offset": 10,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "face_flags_hi",
            "offset": 11,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "vertex_indices_after_flags[1]",
            "offset": 12,
            "doc": "Final storage-order vertex index after the interleaved face flag bytes."
          },
          {
            "type": "int16_t",
            "name": "adj_face_index",
            "offset": 14,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "plane_offset",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_CollisionFace"
        }
      }
    },
    "PKG_CollisionFacePlane": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "plane_distance",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "normal",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "padding_0a",
            "offset": 10,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "adj_edges[4]",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_CollisionFacePlane"
        }
      }
    },
    "PKG_CollisionHeader": {
      "type": {
        "members": [
          {
            "type": "Math_SizeU32",
            "name": "grid_dimensions",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "cell_size",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "data_offset",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "collision_reserved[16]",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 32,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_CollisionHeader"
        }
      }
    },
    "PKG_CollisionShape": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "face_count",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "flags_packed",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "grid_params",
            "offset": 8,
            "doc": null
          },
          {
            "type": "void*",
            "name": "material_base_ptr",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "type_flags",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "extents",
            "offset": 20,
            "doc": null
          },
          {
            "type": "void*",
            "name": "grid_cell_array",
            "offset": 32,
            "doc": null
          },
          {
            "type": "PKG_CollisionFace*",
            "name": "face_array",
            "offset": 36,
            "doc": null
          },
          {
            "type": "PKG_CollisionFacePlane*",
            "name": "plane_array",
            "offset": 40,
            "doc": null
          },
          {
            "type": "PKG_CollisionVertex*",
            "name": "vertex_array",
            "offset": 44,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "sentinel",
            "offset": 48,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "face_array_count",
            "offset": 52,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "vertex_count",
            "offset": 56,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved_3c",
            "offset": 60,
            "doc": null
          }
        ],
        "size": 64,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_CollisionShape"
        }
      }
    },
    "PKG_CollisionVertex": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "pos",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "normal",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_CollisionVertex"
        }
      }
    },
    "PKG_ComponentData": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "component_bytes_01[51]",
            "offset": 1,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "parent_ref_value",
            "offset": 52,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "component_bytes_38[10]",
            "offset": 56,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "delay_base",
            "offset": 66,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "component_bytes_44[2]",
            "offset": 68,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "delay_random",
            "offset": 70,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "component_byte_48",
            "offset": 72,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "spawn_count",
            "offset": 73,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "num_lod_variants",
            "offset": 74,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "component_byte_4_b",
            "offset": 75,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "delay_between",
            "offset": 76,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "component_bytes_4_e[4]",
            "offset": 78,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "init_value",
            "offset": 82,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "component_bytes_54[12]",
            "offset": 84,
            "doc": null
          },
          {
            "type": "Mesh_Node*",
            "name": "sub_nodes[4]",
            "offset": 96,
            "doc": null
          }
        ],
        "size": 112,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_ComponentData"
        }
      }
    },
    "PKG_FaceNormal": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "plane_distance",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "normal",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding_0a[2]",
            "offset": 10,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_FaceNormal"
        }
      }
    },
    "PKG_FindAndLoadGamePKFile": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4452000,
            "rva": 257696,
            "image_base": 4194304
          },
          "eu": {
            "address": 4457552,
            "rva": 263248,
            "image_base": 4194304
          },
          "sc": {
            "address": 4457520,
            "rva": 263216,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "81 EC 10 01 00 00 57 ??"
      }
    },
    "PKG_FindAndOpenFile": {
      "function": {
        "analysis": {
          "en": {
            "address": 4452000,
            "rva": 257696,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_CantFindPKG"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_DalmsSetupPath"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_DriveLetter"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_PcdogsPKG"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_SearchPattern"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_SetupPath"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 344,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 258,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4457552,
            "rva": 263248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_CantFindPKG"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_DalmsSetupPath"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_DriveLetter"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_PcdogsPKG"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_SearchPattern"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_SetupPath"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 261,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 323,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4457520,
            "rva": 263216,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_CantFindPKG"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_DalmsSetupPath"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_DriveLetter"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_PcdogsPKG"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_SearchPattern"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FindAndOpenFile_SetupPath"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 417,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 329,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "PKG_FindAndOpenFile_CantFindPKG"
            },
            "instr_offset": 321,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FindAndOpenFile_SetupPath"
            },
            "instr_offset": 213,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FindAndOpenFile_SearchPattern"
            },
            "instr_offset": 171,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FindAndOpenFile_DalmsSetupPath"
            },
            "instr_offset": 147,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FindAndOpenFile_DriveLetter"
            },
            "instr_offset": 96,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FindAndOpenFile_PcdogsPKG"
            },
            "instr_offset": 69,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "81 EC 10 01 00 00 57 ??",
          "match_offset": 0
        },
        "docs": "Package-file lookup/open routine. EN enters directly into the shared body; EU/SC include a nearby pre-open path-resolution divergence that the sidecar patches via its game hook AOB. The SDK entry signature anchors the common function prologue.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 22,
          "symbol_index": 22,
          "accessor": "DTTR_PCDOGS_F_PKG_FindAndOpenFile",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIND_AND_OPEN_FILE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIND_AND_OPEN_FILE"
        }
      }
    },
    "PKG_FindAndOpenFile_CantFindPKG": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528392,
            "rva": 334088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2096883793,
            "rva": 2092689489,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 164915244,
            "rva": 160720940,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 321,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FindAndOpenFile"
            },
            "instr_offset": 321,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 293,
          "symbol_index": 293,
          "accessor": "DTTR_PCDOGS_D_PKG_FindAndOpenFile_CantFindPKG",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIND_AND_OPEN_FILE_CANT_FIND_PKG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIND_AND_OPEN_FILE_CANT_FIND_PKG"
        }
      }
    },
    "PKG_FindAndOpenFile_DalmsSetupPath": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528464,
            "rva": 334160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 3296919552,
            "rva": 3292725248,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 3296919552,
            "rva": 3292725248,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FindAndOpenFile"
            },
            "instr_offset": 147,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 296,
          "symbol_index": 296,
          "accessor": "DTTR_PCDOGS_D_PKG_FindAndOpenFile_DalmsSetupPath",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIND_AND_OPEN_FILE_DALMS_SETUP_PATH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIND_AND_OPEN_FILE_DALMS_SETUP_PATH"
        }
      }
    },
    "PKG_FindAndOpenFile_DriveLetter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528496,
            "rva": 334192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1744855917,
            "rva": 1740661613,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1744855914,
            "rva": 1740661610,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FindAndOpenFile"
            },
            "instr_offset": 96,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 297,
          "symbol_index": 297,
          "accessor": "DTTR_PCDOGS_D_PKG_FindAndOpenFile_DriveLetter",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIND_AND_OPEN_FILE_DRIVE_LETTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIND_AND_OPEN_FILE_DRIVE_LETTER"
        }
      }
    },
    "PKG_FindAndOpenFile_PcdogsPKG": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528504,
            "rva": 334200,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4524500,
            "rva": 330196,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4524500,
            "rva": 330196,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FindAndOpenFile"
            },
            "instr_offset": 69,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 298,
          "symbol_index": 298,
          "accessor": "DTTR_PCDOGS_D_PKG_FindAndOpenFile_PcdogsPKG",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIND_AND_OPEN_FILE_PCDOGS_PKG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIND_AND_OPEN_FILE_PCDOGS_PKG"
        }
      }
    },
    "PKG_FindAndOpenFile_SearchPattern": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528448,
            "rva": 334144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 608472402,
            "rva": 604278098,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 3896750930,
            "rva": 3892556626,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 171,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FindAndOpenFile"
            },
            "instr_offset": 171,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 295,
          "symbol_index": 295,
          "accessor": "DTTR_PCDOGS_D_PKG_FindAndOpenFile_SearchPattern",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIND_AND_OPEN_FILE_SEARCH_PATTERN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIND_AND_OPEN_FILE_SEARCH_PATTERN"
        }
      }
    },
    "PKG_FindAndOpenFile_SetupPath": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528428,
            "rva": 334124,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1684558344,
            "rva": 1680364040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1359488076,
            "rva": 1355293772,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 213,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FindAndOpenFile"
            },
            "instr_offset": 213,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 294,
          "symbol_index": 294,
          "accessor": "DTTR_PCDOGS_D_PKG_FindAndOpenFile_SetupPath",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIND_AND_OPEN_FILE_SETUP_PATH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIND_AND_OPEN_FILE_SETUP_PATH"
        }
      }
    },
    "PKG_FixUpResourceActorRecordPointers": {
      "function": {
        "analysis": {
          "en": {
            "address": 4442288,
            "rva": 247984,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1101,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4447440,
            "rva": 253136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1173,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4447408,
            "rva": 253104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1173,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor_template",
              "type": "PKG_ActorTemplate*",
              "docs": "Actor template with three node refs at +0/+4/+8 and a animation state table ."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 57 8B 46 10 85 C0 74 ?? 8B 0D ??",
          "match_offset": 0
        },
        "docs": "Fixes actor-template animation and node references in place.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 502,
          "symbol_index": 502,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceActorRecordPointers",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_ACTOR_RECORD_POINTERS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_ACTOR_RECORD_POINTERS"
        }
      }
    },
    "PKG_FixUpResourceAnimationData": {
      "function": {
        "analysis": {
          "en": {
            "address": 4438960,
            "rva": 244656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1025,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4444032,
            "rva": 249728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1097,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4444000,
            "rva": 249696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1097,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "animation_data",
              "type": "Animation_DataBlock*",
              "docs": "Animation block whose channel tables are marked/fixed in place."
            },
            {
              "name": "base_address",
              "type": "int32_t",
              "docs": "Base added to relative animation/table positions."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 8B 4C 24 08 8A 41 07 A8 02 0F 85 ??",
          "match_offset": 0
        },
        "docs": "Marks and fixes animation channel tables in place. The return value is internal loop or flag status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 491,
          "symbol_index": 491,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceAnimationData",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_ANIMATION_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_ANIMATION_DATA"
        }
      }
    },
    "PKG_FixUpResourceComponentNodes": {
      "function": {
        "analysis": {
          "en": {
            "address": 4442496,
            "rva": 248192,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 489,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4447648,
            "rva": 253344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 489,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1023,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4447616,
            "rva": 253312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 115,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 489,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1023,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "component_data",
              "type": "PKG_ComponentData*",
              "docs": "Component record; fixes four sub-node pointers ."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "06 85 C0 74 ?? 8B 0D ??",
          "match_offset": -16
        },
        "docs": "Fixes four component sub-node pointers, owner back-links, and optional animation data in place.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 503,
          "symbol_index": 503,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceComponentNodes",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_COMPONENT_NODES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_COMPONENT_NODES"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers": {
      "function": {
        "analysis": {
          "en": {
            "address": 4440896,
            "rva": 246592,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorCount"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorCountZero"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorListNotNull"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorListNull"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_BaseNull"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultAbsAddr"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultGetAddr"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultNotNull"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultNull"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CycleActorList"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_DebugLoggingEnabled"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_End"
                },
                "instr_offset": 1376,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_MaxThemes"
                },
                "instr_offset": 813,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_NavNet"
                },
                "instr_offset": 1126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_Null"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_PowerupCount"
                },
                "instr_offset": 1056,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_PowerupCountEllipsis"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_SoundDefinitionList"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_SpriteList"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_Start"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_TrailList"
                },
                "instr_offset": 881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_UsableMaterials"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_VariableList"
                },
                "instr_offset": 577,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 165,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 214,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 582,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 624,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 700,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 818,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 886,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1061,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1244,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildStructure"
                },
                "instr_offset": 1335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 1101,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 1025,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 489,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 951,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 965,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 750,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4445968,
            "rva": 251664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorCount"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorCountZero"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorListNotNull"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorListNull"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_BaseNull"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultAbsAddr"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultGetAddr"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultNotNull"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultNull"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CycleActorList"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_DebugLoggingEnabled"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_End"
                },
                "instr_offset": 1376,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_MaxThemes"
                },
                "instr_offset": 813,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_NavNet"
                },
                "instr_offset": 1126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_Null"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_PowerupCount"
                },
                "instr_offset": 1056,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_PowerupCountEllipsis"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_SoundDefinitionList"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_SpriteList"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_Start"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_TrailList"
                },
                "instr_offset": 881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_UsableMaterials"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_VariableList"
                },
                "instr_offset": 577,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 642,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 684,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 760,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 878,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 946,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1133,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1315,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildStructure"
                },
                "instr_offset": 1408,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 1173,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 1097,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 489,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 1023,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 1037,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 801,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 810,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 537,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4445936,
            "rva": 251632,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorCount"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorCountZero"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorListNotNull"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_ActorListNull"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_BaseNull"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultAbsAddr"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultGetAddr"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultNotNull"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CamDefaultNull"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_CycleActorList"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_DebugLoggingEnabled"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_End"
                },
                "instr_offset": 1376,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_MaxThemes"
                },
                "instr_offset": 813,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_NavNet"
                },
                "instr_offset": 1126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_Null"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_PowerupCount"
                },
                "instr_offset": 1056,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_PowerupCountEllipsis"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_SoundDefinitionList"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_SpriteList"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_Start"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_TrailList"
                },
                "instr_offset": 881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_UsableMaterials"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceLevelPointers_VariableList"
                },
                "instr_offset": 577,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 642,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 684,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 760,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 878,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 946,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1133,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1315,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 1455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildStructure"
                },
                "instr_offset": 1408,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 1173,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 1097,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 489,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 1023,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 1037,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 801,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 810,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 537,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "level",
              "type": "PKG_LevelHeader*",
              "docs": "Level header whose relative resource lists are rebased in place."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_End"
            },
            "instr_offset": 1376,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_UsableMaterials"
            },
            "instr_offset": 1239,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_NavNet"
            },
            "instr_offset": 1126,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_PowerupCount"
            },
            "instr_offset": 1056,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_TrailList"
            },
            "instr_offset": 881,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_MaxThemes"
            },
            "instr_offset": 813,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_SpriteList"
            },
            "instr_offset": 695,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_PowerupCountEllipsis"
            },
            "instr_offset": 619,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_VariableList"
            },
            "instr_offset": 577,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_SoundDefinitionList"
            },
            "instr_offset": 535,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_CycleActorList"
            },
            "instr_offset": 295,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_ActorListNotNull"
            },
            "instr_offset": 268,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_ActorListNull"
            },
            "instr_offset": 250,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_ActorCountZero"
            },
            "instr_offset": 209,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_ActorCount"
            },
            "instr_offset": 184,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_CamDefaultNull"
            },
            "instr_offset": 160,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_CamDefaultNotNull"
            },
            "instr_offset": 147,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_CamDefaultGetAddr"
            },
            "instr_offset": 112,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_CamDefaultAbsAddr"
            },
            "instr_offset": 83,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_BaseNull"
            },
            "instr_offset": 59,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_Null"
            },
            "instr_offset": 35,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_Start"
            },
            "instr_offset": 11,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceLevelPointers_DebugLoggingEnabled"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? ?? 83 C4 08 53",
          "match_offset": -17
        },
        "docs": "Rebases package level-header pointers in place; Level_LoadStateMachine ignores the debug-log/status native return value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 501,
          "symbol_index": 501,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceLevelPointers",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_ActorCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526372,
            "rva": 332068,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1160847464,
            "rva": 1156653160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1160847464,
            "rva": 1156653160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 184,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 255,
          "symbol_index": 255,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_ActorCount",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_ACTOR_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_ACTOR_COUNT"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_ActorCountZero": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526348,
            "rva": 332044,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1160841320,
            "rva": 1156647016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1160841320,
            "rva": 1156647016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 209,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 254,
          "symbol_index": 254,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_ActorCountZero",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_ACTOR_COUNT_ZERO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_ACTOR_COUNT_ZERO"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_ActorListNotNull": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526292,
            "rva": 331988,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534480,
            "rva": 340176,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534480,
            "rva": 340176,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 268,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 268,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 252,
          "symbol_index": 252,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_ActorListNotNull",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_ACTOR_LIST_NOT_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_ACTOR_LIST_NOT_NULL"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_ActorListNull": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526320,
            "rva": 332016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534508,
            "rva": 340204,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534508,
            "rva": 340204,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 250,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 250,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 253,
          "symbol_index": 253,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_ActorListNull",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_ACTOR_LIST_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_ACTOR_LIST_NULL"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_BaseNull": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526524,
            "rva": 332220,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1160886376,
            "rva": 1156692072,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1160886376,
            "rva": 1156692072,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 59,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 260,
          "symbol_index": 260,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_BaseNull",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_BASE_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_BASE_NULL"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_CamDefaultAbsAddr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526488,
            "rva": 332184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1160877160,
            "rva": 1156682856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1160877160,
            "rva": 1156682856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 83,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 259,
          "symbol_index": 259,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_CamDefaultAbsAddr",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_CAM_DEFAULT_ABS_ADDR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_CAM_DEFAULT_ABS_ADDR"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_CamDefaultGetAddr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526448,
            "rva": 332144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1160866920,
            "rva": 1156672616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1160866920,
            "rva": 1156672616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 112,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 258,
          "symbol_index": 258,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_CamDefaultGetAddr",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_CAM_DEFAULT_GET_ADDR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_CAM_DEFAULT_GET_ADDR"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_CamDefaultNotNull": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526420,
            "rva": 332116,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1160859752,
            "rva": 1156665448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1160859752,
            "rva": 1156665448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 147,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 257,
          "symbol_index": 257,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_CamDefaultNotNull",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_CAM_DEFAULT_NOT_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_CAM_DEFAULT_NOT_NULL"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_CamDefaultNull": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526392,
            "rva": 332088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1160852584,
            "rva": 1156658280,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1160852584,
            "rva": 1156658280,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 160,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 256,
          "symbol_index": 256,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_CamDefaultNull",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_CAM_DEFAULT_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_CAM_DEFAULT_NULL"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_CycleActorList": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526268,
            "rva": 331964,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534456,
            "rva": 340152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534456,
            "rva": 340152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 295,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 251,
          "symbol_index": 251,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_CycleActorList",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_CYCLE_ACTOR_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_CYCLE_ACTOR_LIST"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_DebugLoggingEnabled": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835952,
            "rva": 641648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844848,
            "rva": 650544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844832,
            "rva": 650528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 692,
          "symbol_index": 692,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_DebugLoggingEnabled",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_DEBUG_LOGGING_ENABLED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_DEBUG_LOGGING_ENABLED"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_End": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526076,
            "rva": 331772,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1376,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2316078348,
            "rva": 2311884044,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1376,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2316078348,
            "rva": 2311884044,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1376,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 1376,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 241,
          "symbol_index": 241,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_End",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_END",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_END"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_MaxThemes": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526168,
            "rva": 331864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 813,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 147096575,
            "rva": 142902271,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 813,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 147096575,
            "rva": 142902271,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 813,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 813,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 246,
          "symbol_index": 246,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_MaxThemes",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_MAX_THEMES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_MAX_THEMES"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_NavNet": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526112,
            "rva": 331808,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 808216576,
            "rva": 804022272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 808216576,
            "rva": 804022272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1126,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 1126,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 243,
          "symbol_index": 243,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_NavNet",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_NAV_NET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_NAV_NET"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_Null": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526560,
            "rva": 332256,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1160895592,
            "rva": 1156701288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1160895592,
            "rva": 1156701288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 35,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 261,
          "symbol_index": 261,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_Null",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_NULL"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_PowerupCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526128,
            "rva": 331824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1056,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518356,
            "rva": 2324052,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1056,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517780,
            "rva": 2323476,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1056,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 1056,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 244,
          "symbol_index": 244,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_PowerupCount",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_POWERUP_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_POWERUP_COUNT"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_PowerupCountEllipsis": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526208,
            "rva": 331904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2311193344,
            "rva": 2306999040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2311193344,
            "rva": 2306999040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 619,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 248,
          "symbol_index": 248,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_PowerupCountEllipsis",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_POWERUP_COUNT_ELLIPSIS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_POWERUP_COUNT_ELLIPSIS"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_SoundDefinitionList": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526248,
            "rva": 331944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534436,
            "rva": 340132,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534436,
            "rva": 340132,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 535,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 250,
          "symbol_index": 250,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_SoundDefinitionList",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_SOUND_DEFINITION_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_SOUND_DEFINITION_LIST"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_SpriteList": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526188,
            "rva": 331884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 3380944971,
            "rva": 3376750667,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 3380944971,
            "rva": 3376750667,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 695,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 695,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 247,
          "symbol_index": 247,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_SpriteList",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_SPRITE_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_SPRITE_LIST"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_Start": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526592,
            "rva": 332288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534780,
            "rva": 340476,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534780,
            "rva": 340476,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 11,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 262,
          "symbol_index": 262,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_Start",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_START",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_START"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_TrailList": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526148,
            "rva": 331844,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 147096575,
            "rva": 142902271,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 147096575,
            "rva": 142902271,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 881,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 245,
          "symbol_index": 245,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_TrailList",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_TRAIL_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_TRAIL_LIST"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_UsableMaterials": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526092,
            "rva": 331788,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 361445492,
            "rva": 357251188,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 361445492,
            "rva": 357251188,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1239,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 1239,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 242,
          "symbol_index": 242,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_UsableMaterials",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_USABLE_MATERIALS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_USABLE_MATERIALS"
        }
      }
    },
    "PKG_FixUpResourceLevelPointers_VariableList": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526232,
            "rva": 331928,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 577,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1267407998,
            "rva": 1263213694,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 577,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1267407998,
            "rva": 1263213694,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 577,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceLevelPointers"
            },
            "instr_offset": 577,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Level variable-list pointer/count region processed by PKG_FixUpResourceLevelPointers.",
        "sdk": {
          "id": 249,
          "symbol_index": 249,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceLevelPointers_VariableList",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_VARIABLE_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_LEVEL_POINTERS_VARIABLE_LIST"
        }
      }
    },
    "PKG_FixUpResourceMaterialIndices": {
      "function": {
        "analysis": {
          "en": {
            "address": 4439184,
            "rva": 244880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4444256,
            "rva": 249952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4444224,
            "rva": 249920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "index_block",
              "type": "char*",
              "docs": "Pointer-list block with flag byte at +0 , count , and relative list pointer ."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 54 24 04 56 F6 02 80 75 ?? A1 ??",
          "match_offset": 0
        },
        "docs": "Fixes a material index/pointer-list block in place. Flag bit 0x80 skips the block; otherwise the routine reads the count, rebases the pointer list, and fixes type-1 side pointers.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 493,
          "symbol_index": 493,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceMaterialIndices",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_MATERIAL_INDICES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_MATERIAL_INDICES"
        }
      }
    },
    "PKG_FixUpResourceMaterialRefs": {
      "function": {
        "analysis": {
          "en": {
            "address": 4439120,
            "rva": 244816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4444192,
            "rva": 249888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4444160,
            "rva": 249856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "material_refs",
              "type": "int32_t*",
              "docs": "Array of material-reference records fixed in place."
            },
            {
              "name": "ref_count",
              "type": "int32_t",
              "docs": "Number of material-reference records to process."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 54 24 08 8B 44 24 04 56 8B 08 8B 35 ??",
          "match_offset": 0
        },
        "docs": "Walks and fixes ref_count material-reference records in place.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 492,
          "symbol_index": 492,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceMaterialRefs",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_MATERIAL_REFS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_MATERIAL_REFS"
        }
      }
    },
    "PKG_FixUpResourceObjectNodeDispatchByType": {
      "function": {
        "analysis": {
          "en": {
            "address": 4438416,
            "rva": 244112,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType_LevelBlobPtr"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType7SpriteEntry"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType8Ptr6COnly"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 257,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 965,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4443488,
            "rva": 249184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType_LevelBlobPtr"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType7SpriteEntry"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType8Ptr6COnly"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 521,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1037,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4443456,
            "rva": 249152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType_LevelBlobPtr"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType7SpriteEntry"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType8Ptr6COnly"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 521,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceActorRecordPointers"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceComponentNodes"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 1037,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "node",
              "type": "PKG_ObjectNodeFixupView*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceObjectNodeDispatchByType_LevelBlobPtr"
            },
            "instr_offset": 12,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 8B 46 04 85 C0 74 ?? 8B 0D ??",
          "match_offset": 0
        },
        "docs": "Rebases node sibling and cursor links, dispatches by node_type, and recurses through child siblings. Type 2 returns before child-link rebase, while handled non-type-2 payloads are fixed before recursion.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 489,
          "symbol_index": 489,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceObjectNodeDispatchByType",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_OBJECT_NODE_DISPATCH_BY_TYPE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_OBJECT_NODE_DISPATCH_BY_TYPE"
        }
      }
    },
    "PKG_FixUpResourceObjectNodeDispatchByType_LevelBlobPtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507092,
            "rva": 2312788,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518356,
            "rva": 2324052,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517780,
            "rva": 2323476,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceObjectNodeDispatchByType"
            },
            "instr_offset": 12,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "PKG_FixUpResourceObjectNodeDispatchByType",
          "instr_offset": 12,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Active level blob relocation base used while rebasing material, object, and level data. Level_LoadStateMachine returns it after final fixups.",
        "sdk": {
          "id": 812,
          "symbol_index": 812,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceObjectNodeDispatchByType_LevelBlobPtr",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_OBJECT_NODE_DISPATCH_BY_TYPE_LEVEL_BLOB_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_OBJECT_NODE_DISPATCH_BY_TYPE_LEVEL_BLOB_PTR"
        }
      }
    },
    "PKG_FixUpResourceObjectNodeType0Hierarchy": {
      "function": {
        "analysis": {
          "en": {
            "address": 4440176,
            "rva": 245872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4445248,
            "rva": 250944,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4445216,
            "rva": 250912,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "node",
              "type": "PKG_ObjectNodeFixupView*",
              "docs": "Group/type-0 hierarchy node record; rebases nested lists and fixes child/object/polygon sidecars."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 57 8B 7C 24 0C 8B 47 70 85 C0 74 ?? 8B 0D ??",
          "match_offset": 0
        },
        "docs": "Type-0 hierarchy node fixup; mutates linked child/object/polygon sidecars in place.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 499,
          "symbol_index": 499,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceObjectNodeType0Hierarchy",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE0_HIERARCHY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE0_HIERARCHY"
        }
      }
    },
    "PKG_FixUpResourceObjectNodeType1MeshActorLike": {
      "function": {
        "analysis": {
          "en": {
            "address": 4438560,
            "rva": 244256,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike_LevelMaterialSection"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialRefs"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceRenderNodeEntries"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4443632,
            "rva": 249328,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike_LevelMaterialSection"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialRefs"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceRenderNodeEntries"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4443600,
            "rva": 249296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike_LevelMaterialSection"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceAnimationData"
                },
                "instr_offset": 269,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialRefs"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceRenderNodeEntries"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 71,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "node",
              "type": "PKG_ObjectNodeFixupView*",
              "docs": "Type-1 model node record whose pointer fields are rebased in place."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike_LevelMaterialSection"
            },
            "instr_offset": 277,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? 03 C2 89 86 80",
          "match_offset": -78
        },
        "docs": "Type-1 mesh/actor-like node fixup; mutates model-node fields in place.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 490,
          "symbol_index": 490,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceObjectNodeType1MeshActorLike",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE1_MESH_ACTOR_LIKE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE1_MESH_ACTOR_LIKE"
        }
      }
    },
    "PKG_FixUpResourceObjectNodeType1MeshActorLike_LevelMaterialSection": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507088,
            "rva": 2312784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518352,
            "rva": 2324048,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517776,
            "rva": 2323472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
            },
            "instr_offset": 277,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Material_SectionHeader*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "PKG_FixUpResourceObjectNodeType1MeshActorLike",
          "instr_offset": 277,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Active level material section header/base used while rebasing model-node material references.",
        "sdk": {
          "id": 811,
          "symbol_index": 811,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceObjectNodeType1MeshActorLike_LevelMaterialSection",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE1_MESH_ACTOR_LIKE_LEVEL_MATERIAL_SECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE1_MESH_ACTOR_LIKE_LEVEL_MATERIAL_SECTION"
        }
      }
    },
    "PKG_FixUpResourceObjectNodeType3ComplexActorLike": {
      "function": {
        "analysis": {
          "en": {
            "address": 4439424,
            "rva": 245120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike_SpecialNodeProcessingFlag"
                },
                "instr_offset": 573,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_GetDataTextureRefs"
                },
                "instr_offset": 688,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialRefs"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceRenderNodeEntries"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4444496,
            "rva": 250192,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike_SpecialNodeProcessingFlag"
                },
                "instr_offset": 573,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_GetDataTextureRefs"
                },
                "instr_offset": 688,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialRefs"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceRenderNodeEntries"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4444464,
            "rva": 250160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike_SpecialNodeProcessingFlag"
                },
                "instr_offset": 573,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_GetDataTextureRefs"
                },
                "instr_offset": 688,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialRefs"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceRenderNodeEntries"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "node",
              "type": "PKG_ObjectNodeFixupView*",
              "docs": "Type-3 scene mesh node record fixed in place."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike_SpecialNodeProcessingFlag"
            },
            "instr_offset": 573,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8E 84 00 00 00 8B 15 ??",
          "match_offset": -73
        },
        "docs": "Type-3/complex node fixup; mutates node sidecars in place.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 496,
          "symbol_index": 496,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceObjectNodeType3ComplexActorLike",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE3_COMPLEX_ACTOR_LIKE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE3_COMPLEX_ACTOR_LIKE"
        }
      }
    },
    "PKG_FixUpResourceObjectNodeType3ComplexActorLike_SpecialNodeProcessingFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 4834320,
            "rva": 640016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 573,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4843216,
            "rva": 648912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 573,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4843200,
            "rva": 648896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 573,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
            },
            "instr_offset": 573,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 670,
          "symbol_index": 670,
          "accessor": "DTTR_PCDOGS_D_PKG_FixUpResourceObjectNodeType3ComplexActorLike_SpecialNodeProcessingFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE3_COMPLEX_ACTOR_LIKE_SPECIAL_NODE_PROCESSING_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE3_COMPLEX_ACTOR_LIKE_SPECIAL_NODE_PROCESSING_FLAG"
        }
      }
    },
    "PKG_FixUpResourceObjectNodeType7SpriteEntry": {
      "function": {
        "analysis": {
          "en": {
            "address": 4440160,
            "rva": 245856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4445232,
            "rva": 250928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4445200,
            "rva": 250896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourcePolygonList"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "node",
              "type": "PKG_ObjectNodeFixupView*",
              "docs": "Type-7 compact object node; passes the sprite/material descriptor payload at node->material_refs_offset (+0x6C) to PKG_FixUpResourceSpriteEntry."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 83 C0 6C 50 E8 ??",
          "match_offset": 0
        },
        "docs": "Fixes the type-7 node sprite/material payload in place.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 498,
          "symbol_index": 498,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceObjectNodeType7SpriteEntry",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE7_SPRITE_ENTRY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE7_SPRITE_ENTRY"
        }
      }
    },
    "PKG_FixUpResourceObjectNodeType8Ptr6COnly": {
      "function": {
        "analysis": {
          "en": {
            "address": 4440128,
            "rva": 245824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4445200,
            "rva": 250896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4445168,
            "rva": 250864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeDispatchByType"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "node",
              "type": "PKG_ObjectNodeFixupView*",
              "docs": "Type-8 simple node; only the payload pointer is rebased."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4C 24 04 8B 41 6C 85 C0 74 ?? 8B 15 ??",
          "match_offset": 0
        },
        "docs": "Performs the type-8 pointer-only node fixup in place.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 497,
          "symbol_index": 497,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceObjectNodeType8Ptr6COnly",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE8_PTR6_C_ONLY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_OBJECT_NODE_TYPE8_PTR6_C_ONLY"
        }
      }
    },
    "PKG_FixUpResourcePolygonList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4440560,
            "rva": 246256,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialRefs"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType7SpriteEntry"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4445632,
            "rva": 251328,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialRefs"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType7SpriteEntry"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4445600,
            "rva": 251296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 307,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialRefs"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType7SpriteEntry"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType0Hierarchy"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "rel_node_list",
              "type": "int32_t*",
              "docs": "Relative node-list head/link field fixed in place."
            },
            {
              "name": "advance_by_link_slot",
              "type": "int32_t",
              "docs": "Nonzero advances through consecutive link slots; zero follows each rebased node link."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 57 8B 7C 24 0C 8B 37 85 F6 0F 84 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 500,
          "symbol_index": 500,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourcePolygonList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_POLYGON_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_POLYGON_LIST"
        }
      }
    },
    "PKG_FixUpResourceRenderNodeEntries": {
      "function": {
        "analysis": {
          "en": {
            "address": 4439280,
            "rva": 244976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4444352,
            "rva": 250048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4444320,
            "rva": 250016,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceSpriteEntry"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType1MeshActorLike"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType3ComplexActorLike"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "entries",
              "type": "Mesh_RenderNodeEntry*",
              "docs": "Array base; each entry has a sprite/material descriptor and a tail pointer rebased by the level blob base."
            },
            {
              "name": "entry_count",
              "type": "int32_t",
              "docs": "Number of render-node entries to fix."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "72 ?? 8D 46 F0 50 E8 ??",
          "match_offset": -21
        },
        "docs": "Walks render-node entries, fixes sprite/material descriptors, and rebases the entry tail pointer in place.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 494,
          "symbol_index": 494,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceRenderNodeEntries",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_RENDER_NODE_ENTRIES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_RENDER_NODE_ENTRIES"
        }
      }
    },
    "PKG_FixUpResourceSpriteEntry": {
      "function": {
        "analysis": {
          "en": {
            "address": 4439344,
            "rva": 245040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 750,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType7SpriteEntry"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceRenderNodeEntries"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4444416,
            "rva": 250112,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 801,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 810,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType7SpriteEntry"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceRenderNodeEntries"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4444384,
            "rva": 250080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceMaterialIndices"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 801,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceLevelPointers"
                },
                "instr_offset": 810,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceObjectNodeType7SpriteEntry"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FixUpResourceRenderNodeEntries"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "sprite_material_desc",
              "type": "int32_t*",
              "docs": "0x0C sprite/material descriptor fixed in place: material table base, material entry/index, optional index block."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8B 0D ?? ?? ?? ?? 89 08 8B 48",
          "match_offset": 0
        },
        "docs": "Fixes a sprite/material descriptor by publishing the material table, resolving its material entry, and rebasing/fixing an optional index block.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 495,
          "symbol_index": 495,
          "accessor": "DTTR_PCDOGS_F_PKG_FixUpResourceSpriteEntry",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FIX_UP_RESOURCE_SPRITE_ENTRY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FIX_UP_RESOURCE_SPRITE_ENTRY"
        }
      }
    },
    "PKG_FreeResourceAndReturnNull": {
      "function": {
        "analysis": {
          "en": {
            "address": 4378000,
            "rva": 183696,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 452,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4382432,
            "rva": 188128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4382400,
            "rva": 188096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "mem_ptr",
              "type": "void*",
              "docs": "Resource-memory data pointer forwarded to PKG_FreeResourceMemory."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 50 E8 ?? ?? ?? ?? 83 C4 04 32",
          "match_offset": 0
        },
        "docs": "Frees memPtr through PKG_FreeResourceMemory and returns FALSE.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 381,
          "symbol_index": 381,
          "accessor": "DTTR_PCDOGS_F_PKG_FreeResourceAndReturnNull",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FREE_RESOURCE_AND_RETURN_NULL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FREE_RESOURCE_AND_RETURN_NULL"
        }
      }
    },
    "PKG_FreeResourceData": {
      "function": {
        "analysis": {
          "en": {
            "address": 4451968,
            "rva": 257664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceHandle"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4457408,
            "rva": 263104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4457376,
            "rva": 263072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "resource_data",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 50 E8 ?? ?? ?? ?? 59 C3 90 90 90 90 B0",
          "match_offset": 0
        },
        "docs": "Thin wrapper around PKG_FreeResourceMemory for resource data pointers.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 542,
          "symbol_index": 542,
          "accessor": "DTTR_PCDOGS_F_PKG_FreeResourceData",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FREE_RESOURCE_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FREE_RESOURCE_DATA"
        }
      }
    },
    "PKG_FreeResourceMemory": {
      "function": {
        "analysis": {
          "en": {
            "address": 4384448,
            "rva": 190144,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_IsValidHandle"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceAndReturnNull"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4389456,
            "rva": 195152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_IsValidHandle"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceAndReturnNull"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4389424,
            "rva": 195120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_IsValidHandle"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_ReleaseHandle"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceAndReturnNull"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "mem_ptr",
              "type": "void*",
              "docs": "Resource data pointer returned after the hidden handle dword."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 85 C0 74 ?? 56 8B 70 FC 56 E8 ??",
          "match_offset": 0
        },
        "docs": "Releases a resource data pointer allocated by PKG_AllocateResourceMemory/PKG_AllocateResourceWithHeader by reading the hidden handle at mem_ptr - 4.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 403,
          "symbol_index": 403,
          "accessor": "DTTR_PCDOGS_F_PKG_FreeResourceMemory",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_FREE_RESOURCE_MEMORY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_FREE_RESOURCE_MEMORY"
        }
      }
    },
    "PKG_GeometryChunk": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "vertex_offset",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "vertex_count",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "polygon_offset",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "polygon_count",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_ref",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 20,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_GeometryChunk"
        }
      }
    },
    "PKG_GeometryResource": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "node_count",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "resource_mgr_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_table_offset",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_data_size",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "total_data_size",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "geometry_flags",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "secondary_data_size",
            "offset": 24,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "version",
            "offset": 32,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "geometry_reserved[12]",
            "offset": 36,
            "doc": null
          }
        ],
        "size": 48,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_GeometryResource"
        }
      }
    },
    "PKG_Header": {
      "type": {
        "members": [
          {
            "type": "PKG_TOCEntry",
            "name": "entries[138]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "header_reserved[944]",
            "offset": 1104,
            "doc": "Unparsed package-header tail, left after PKG_OpenAndReadTOC copies only the first storage of the header."
          }
        ],
        "size": 2048,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_Header"
        }
      }
    },
    "PKG_InitializeResourceGameEngine": {
      "function": {
        "analysis": {
          "en": {
            "address": 4376592,
            "rva": 182288,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_InitializeDirectDraw"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_InitializeAllocator"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 383,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4380352,
            "rva": 186048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_InitializeAllocator"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4380320,
            "rva": 186016,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_InitializeAllocator"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? 85 C0 75 ?? 32",
          "match_offset": 0
        },
        "docs": "Initialize the core memory/resource and DirectDraw-backed game engine subsystems; returns nonzero on initialization success even though native Window_RunWinMain ignores the status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 3,
          "symbol_index": 3,
          "accessor": "DTTR_PCDOGS_F_PKG_InitializeResourceGameEngine",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_INITIALIZE_RESOURCE_GAME_ENGINE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_INITIALIZE_RESOURCE_GAME_ENGINE"
        }
      }
    },
    "PKG_InitializeSystem": {
      "function": {
        "analysis": {
          "en": {
            "address": 4450400,
            "rva": 256096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_InitializeSystem_GraphicsFlags"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 529,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4455674,
            "rva": 261370,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_InitializeSystem_GraphicsFlags"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4455642,
            "rva": 261338,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_InitializeSystem_GraphicsFlags"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeSystem"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_InitializeDispatchTables"
                },
                "instr_offset": 10,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_OpenAndReadTOC"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "PKG_InitializeSystem_GraphicsFlags"
            },
            "instr_offset": 20,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? A1",
          "match_offset": 0
        },
        "docs": "Bootstraps package/resource startup by opening and reading the package TOC, initializing audio, initializing render dispatch tables, and seeding graphics flags/capabilities; returns the resulting graphics capability word/status value. EU/SC builds prefix this body with an instruction that enables the multi-language boot flow; PKG_InitializeSystemMultiLanguage anchors that true entry and must be preferred when resolved.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 20,
          "symbol_index": 20,
          "accessor": "DTTR_PCDOGS_F_PKG_InitializeSystem",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_INITIALIZE_SYSTEM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_INITIALIZE_SYSTEM"
        }
      }
    },
    "PKG_InitializeSystemMultiLanguage": {
      "function": {
        "analysis": {
          "eu": {
            "address": 4455664,
            "rva": 261360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 538,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4455632,
            "rva": 261328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 538,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "81 0D ?? ?? ?? ?? 00 00 00 04 E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? A1",
          "match_offset": 0
        },
        "docs": "The EU/SC version of PKG_InitializeSystem. Sets the multi-language game flag (bit 0x4000000) that is required to open the region/language select level, then falls through into the shared PKG_InitializeSystem body. Entering through PKG_InitializeSystem instead skips the flag and suppresses the language select screen.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 21,
          "symbol_index": 21,
          "accessor": "DTTR_PCDOGS_F_PKG_InitializeSystemMultiLanguage",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_INITIALIZE_SYSTEM_MULTI_LANGUAGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_INITIALIZE_SYSTEM_MULTI_LANGUAGE"
        }
      }
    },
    "PKG_InitializeSystem_GraphicsFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439928,
            "rva": 2245624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6450168,
            "rva": 2255864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449592,
            "rva": 2255288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 20,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_InitializeSystem"
            },
            "instr_offset": 20,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 740,
          "symbol_index": 740,
          "accessor": "DTTR_PCDOGS_D_PKG_InitializeSystem_GraphicsFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_INITIALIZE_SYSTEM_GRAPHICS_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_INITIALIZE_SYSTEM_GRAPHICS_FLAGS"
        }
      }
    },
    "PKG_LODEntry": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "lod_level",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "sprite_layer_count",
            "offset": 2,
            "doc": null
          },
          {
            "type": "void*",
            "name": "render_data_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "rot_angle_x",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "face_count",
            "offset": 10,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "lod_reserved_0_c",
            "offset": 12,
            "doc": "Internal LOD descriptor word used by render selection with lod_level, sprite_layer_count, render_data_ptr, face_count/start, and threshold."
          },
          {
            "type": "uint16_t",
            "name": "lod_distance_threshold",
            "offset": 14,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "face_start_index",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "lod_reserved_12",
            "offset": 18,
            "doc": "Reserved LOD descriptor word reserved for internal use."
          },
          {
            "type": "int32_t",
            "name": "lod_reserved_14",
            "offset": 20,
            "doc": "Reserved LOD descriptor dword reserved for internal use."
          },
          {
            "type": "int32_t",
            "name": "lod_reserved_18",
            "offset": 24,
            "doc": "Reserved LOD descriptor dword reserved for internal use."
          },
          {
            "type": "int32_t",
            "name": "lod_reserved_1_c",
            "offset": 28,
            "doc": "Reserved LOD descriptor dword reserved for internal use."
          },
          {
            "type": "int16_t",
            "name": "lod_reserved_20",
            "offset": 32,
            "doc": "Reserved LOD descriptor word reserved for internal use."
          },
          {
            "type": "int16_t",
            "name": "lod_padding_22",
            "offset": 34,
            "doc": "Reserved word before the relocated slot reserved for internal use."
          },
          {
            "type": "int32_t",
            "name": "lod_relocated_ptr_24",
            "offset": 36,
            "doc": "Relocated pointer and position slot in LOD data rebased by PKG_FixUpResourceObjectNodeType3ComplexActorLike and Actor_CloneTemplateWithTemplateRelativeFixups."
          }
        ],
        "size": 40,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_LODEntry"
        }
      }
    },
    "PKG_LevelHeader": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "cam_default_offset",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "actor_record_count",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "padding_06",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "initial_entity_index",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "entity_count",
            "offset": 10,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "entity_array_offset",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "sound_definition_list_offset",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "sound_definition_count",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "var_list_offset",
            "offset": 24,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "powerup_count",
            "offset": 28,
            "doc": "Number of Powerup_Entry spawn records in powerup_list_offset."
          },
          {
            "type": "int16_t",
            "name": "powerup_type_count",
            "offset": 30,
            "doc": "Authored powerup type/template count; spawn logic indexes the fixed actor-template table by Powerup_Entry.powerup_type, or slot 15 when flag 0x20 is set."
          },
          {
            "type": "uint32_t",
            "name": "powerup_list_offset",
            "offset": 32,
            "doc": "Package-relative position to the Powerup_Entry spawn-record list."
          },
          {
            "type": "uint32_t",
            "name": "powerup_actor_template_offsets[16]",
            "offset": 36,
            "doc": "Fixed 16-slot table of package-relative PKG_ActorTemplate positions used as powerup clone sources. Runtime Level_RuntimeData.powerup_actor_template_slots contains the fixed-up PKG_ActorTemplate* sources."
          },
          {
            "type": "uint32_t",
            "name": "theme_0_offset",
            "offset": 100,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "theme_1_offset",
            "offset": 104,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "theme_2_offset",
            "offset": 108,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "theme_3_offset",
            "offset": 112,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "theme_4_offset",
            "offset": 116,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "theme_count",
            "offset": 120,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "trail_list_offset",
            "offset": 124,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "sprite_list_offset",
            "offset": 128,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "nav_net_offset",
            "offset": 132,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "usable_materials_offset",
            "offset": 136,
            "doc": null
          }
        ],
        "size": 140,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Package level header containing actor, entity-slot, sound, powerup, theme, trail, sprite, nav, and material relocation fields.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_LevelHeader"
        }
      }
    },
    "PKG_LevelResource": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "node_count",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "resource_mgr_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_table_offset",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_count",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Package level-resource header used as the relocation base for resource-manager and material-table fields.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_LevelResource"
        }
      }
    },
    "PKG_LoadEntry": {
      "function": {
        "analysis": {
          "en": {
            "address": 4451840,
            "rva": 257536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadEntry_FileHandle"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadEntry_Toc"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadEntry_TocFileSizes"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4457280,
            "rva": 262976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadEntry_FileHandle"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadEntry_Toc"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadEntry_TocFileSizes"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 425,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 581,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4457248,
            "rva": 262944,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadEntry_FileHandle"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadEntry_Toc"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadEntry_TocFileSizes"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 425,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 581,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 429,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "toc_index",
              "type": "int32_t",
              "docs": "Index into package_toc."
            },
            {
              "name": "dest_buffer",
              "type": "void*",
              "docs": "Optional caller-supplied destination; allocated when NULL."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "PKG_LoadEntry_FileHandle"
            },
            "instr_offset": 76,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_LoadEntry_Toc"
            },
            "instr_offset": 69,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_LoadEntry_TocFileSizes"
            },
            "instr_offset": 7,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "33 C0 5B C3 8B C7 25 ??",
          "match_offset": -20
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 541,
          "symbol_index": 541,
          "accessor": "DTTR_PCDOGS_F_PKG_LoadEntry",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_LOAD_ENTRY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_LOAD_ENTRY"
        }
      }
    },
    "PKG_LoadEntryAlloc": {
      "function": {
        "analysis": {
          "en": {
            "address": 4451376,
            "rva": 257072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4382400,
            "rva": 188096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 374,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4382368,
            "rva": 188064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 9,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 363,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 395,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "toc_index",
              "type": "int32_t",
              "docs": "Package TOC index to load with destination allocation enabled."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 6A 01 6A 00 50 E8 ??",
          "match_offset": 0
        },
        "docs": "Wrapper around PKG_LoadEntry(toc_index, NULL) that allocates destination storage for one package TOC entry and returns the loaded buffer pointer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 538,
          "symbol_index": 538,
          "accessor": "DTTR_PCDOGS_F_PKG_LoadEntryAlloc",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_LOAD_ENTRY_ALLOC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_LOAD_ENTRY_ALLOC"
        }
      }
    },
    "PKG_LoadEntry_FileHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835960,
            "rva": 641656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844856,
            "rva": 650552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844840,
            "rva": 650536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_LoadEntry"
            },
            "instr_offset": 76,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "File_Handle*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "PKG_LoadEntry",
          "instr_offset": 76,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Open package File_Handle consumed by PKG_LoadEntry while reading aligned package entries.",
        "sdk": {
          "id": 693,
          "symbol_index": 693,
          "accessor": "DTTR_PCDOGS_D_PKG_LoadEntry_FileHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_LOAD_ENTRY_FILE_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_LOAD_ENTRY_FILE_HANDLE"
        }
      }
    },
    "PKG_LoadEntry_Toc": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835968,
            "rva": 641664,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844864,
            "rva": 650560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844848,
            "rva": 650544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_LoadEntry"
            },
            "instr_offset": 69,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "PKG_TOCEntry",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "PKG_LoadEntry",
          "instr_offset": 69,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Base of the / package table of contents; each PKG_TOCEntry stores file position and size.",
        "sdk": {
          "id": 694,
          "symbol_index": 694,
          "accessor": "DTTR_PCDOGS_D_PKG_LoadEntry_Toc",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_LOAD_ENTRY_TOC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_LOAD_ENTRY_TOC"
        }
      }
    },
    "PKG_LoadEntry_TocFileSizes": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835972,
            "rva": 641668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844868,
            "rva": 650564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844852,
            "rva": 650548,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_LoadEntry"
            },
            "instr_offset": 7,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "PKG_LoadEntry",
          "instr_offset": 7,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Size-field view used by PKG_LoadEntry; this overlaps the PKG_TOCEntry.size lane within the package TOC allocation.",
        "sdk": {
          "id": 695,
          "symbol_index": 695,
          "accessor": "DTTR_PCDOGS_D_PKG_LoadEntry_TocFileSizes",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_LOAD_ENTRY_TOC_FILE_SIZES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_LOAD_ENTRY_TOC_FILE_SIZES"
        }
      }
    },
    "PKG_LoadTitleScreenResources": {
      "function": {
        "analysis": {
          "en": {
            "address": 4472240,
            "rva": 277936,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadTitleScreenResources_AudioTitleMusicData"
                },
                "instr_offset": 151,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitleMaterialBase"
                },
                "instr_offset": 85,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitlePackage"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle0"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle1"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 169,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 91,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 28,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadTitleScreenResources_AudioTitleMusicData"
                },
                "instr_offset": 151,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitleMaterialBase"
                },
                "instr_offset": 85,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitlePackage"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle0"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle1"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_LoadTitleScreenResources_AudioTitleMusicData"
                },
                "instr_offset": 151,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitleMaterialBase"
                },
                "instr_offset": 85,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitlePackage"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle0"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle1"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Title_ResourceHandle1"
            },
            "instr_offset": 36,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Title_ResourceHandle0"
            },
            "instr_offset": 12,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_ResourceTitleMaterialBase"
            },
            "instr_offset": 85,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_ResourceTitlePackage"
            },
            "instr_offset": 62,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_LoadTitleScreenResources_AudioTitleMusicData"
            },
            "instr_offset": 151,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "6A 00 6A 00 E8 ?? ?? ?? ?? 83 C4 08",
          "match_offset": 0
        },
        "docs": "Loads title packages/materials/sound refs and returns nonzero on success.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 23,
          "symbol_index": 23,
          "accessor": "DTTR_PCDOGS_F_PKG_LoadTitleScreenResources",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_LOAD_TITLE_SCREEN_RESOURCES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_LOAD_TITLE_SCREEN_RESOURCES"
        }
      }
    },
    "PKG_LoadTitleScreenResources_AudioTitleMusicData": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838604,
            "rva": 644300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 151,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 151,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 151,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_LoadTitleScreenResources"
            },
            "instr_offset": 151,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "PKG_LoadTitleScreenResources",
          "instr_offset": 151,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Title-screen music stream-record pointer loaded from the title package and armed by Audio_StartMusicWithFade.",
        "sdk": {
          "id": 714,
          "symbol_index": 714,
          "accessor": "DTTR_PCDOGS_D_PKG_LoadTitleScreenResources_AudioTitleMusicData",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_LOAD_TITLE_SCREEN_RESOURCES_AUDIO_TITLE_MUSIC_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_LOAD_TITLE_SCREEN_RESOURCES_AUDIO_TITLE_MUSIC_DATA"
        }
      }
    },
    "PKG_MaterialRef": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "texture_id",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Material_Descriptor*",
            "name": "texture_desc_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "properties",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_MaterialRef"
        }
      }
    },
    "PKG_MaterialTableEntry": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "texture_offset",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Material_Descriptor*",
            "name": "texture_desc_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Math_SizeU16",
            "name": "dimensions",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "runtime_surface",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "pixel_data_offset",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "format_flags",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "mipmap_count",
            "offset": 22,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "palette_offset",
            "offset": 24,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "extra_flags",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "extra_data",
            "offset": 32,
            "doc": null
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_MaterialTableEntry"
        }
      }
    },
    "PKG_MenuTextureResource": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "format",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "data_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved",
            "offset": 8,
            "doc": null
          },
          {
            "type": "char",
            "name": "filename[16]",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 28,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_MenuTextureResource"
        }
      }
    },
    "PKG_MeshNodeHeader": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "node_type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "parent_index",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "node_data_offset",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "link_data",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "bone_transforms[12]",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Math_RectI16",
            "name": "bounds",
            "offset": 64,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "mesh_flags",
            "offset": 72,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "mesh_config[3]",
            "offset": 76,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "visibility_mask",
            "offset": 88,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "padding_5c",
            "offset": 92,
            "doc": "Padding/internal mesh-node header word."
          },
          {
            "type": "uint16_t",
            "name": "padding_5e",
            "offset": 94,
            "doc": "Padding/internal mesh-node header word."
          },
          {
            "type": "uint32_t",
            "name": "vertex_format",
            "offset": 96,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "subtype_id",
            "offset": 100,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "subtype_flags",
            "offset": 101,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "polygon_count",
            "offset": 102,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "vertex_count",
            "offset": 104,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "material_ref_count",
            "offset": 106,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "polygon_offset",
            "offset": 108,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "vertex_offset",
            "offset": 112,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "normal_offset",
            "offset": 116,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "resource_manager_ptr",
            "offset": 120,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_indices_offset",
            "offset": 124,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "secondary_vertex_ptr",
            "offset": 128,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "vertex_color_ptr",
            "offset": 132,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "node_runtime_flags",
            "offset": 136,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "anim_state_index",
            "offset": 140,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "uv_data_ptr",
            "offset": 144,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "aux_entry_array_ptr",
            "offset": 148,
            "doc": null
          },
          {
            "type": "Math_Vec3U",
            "name": "cached_world_pos",
            "offset": 152,
            "doc": null
          },
          {
            "type": "Math_BoundingSphereU16",
            "name": "bounding_sphere",
            "offset": 164,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "bone_ref_array_ptr",
            "offset": 172,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "morph_target_list_ptr",
            "offset": 176,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "render_batch_array_ptr",
            "offset": 180,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "draw_order_flags",
            "offset": 184,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "render_node_entry_count",
            "offset": 186,
            "doc": "Render-node entry count , passed to render-entry fixup."
          },
          {
            "type": "uint8_t",
            "name": "lod_count",
            "offset": 187,
            "doc": "LOD entry count at lod_array_ptr, used while rebasing LOD entries."
          },
          {
            "type": "Mesh_RenderNodeEntry*",
            "name": "render_node_entry_table_ptr",
            "offset": 188,
            "doc": "Mesh render-node entry table used by mesh-node fixup and render paths."
          },
          {
            "type": "uint32_t",
            "name": "lod_array_ptr",
            "offset": 192,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "default_vertex_color",
            "offset": 196,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "bone_data_ptr",
            "offset": 200,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_batch_base",
            "offset": 204,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "component_list_ptr",
            "offset": 208,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "init_world_pos_z",
            "offset": 212,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "bounding_radius",
            "offset": 216,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "runtime_anim_timer",
            "offset": 220,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "runtime_transform[4]",
            "offset": 224,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "strip_vertex_count",
            "offset": 240,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "aux_entry_count",
            "offset": 242,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "special_node_data_ptr",
            "offset": 244,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "data_material_ref_ptr",
            "offset": 248,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "padding_fc",
            "offset": 252,
            "doc": "Reserved mesh-node header dword. It is reserved for internal use."
          },
          {
            "type": "uint32_t",
            "name": "relative_offset_list_ptr",
            "offset": 256,
            "doc": "Relative-position list rebased in place by PKG_FixUpResourceObjectNodeType3ComplexActorLike; the function walks a dword list until a zero terminator and adds the rebased base to each nonzero entry."
          }
        ],
        "size": 260,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_MeshNodeHeader"
        }
      }
    },
    "PKG_MeshOffsetTable": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "mesh_offsets[16]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "offset_padding[64]",
            "offset": 64,
            "doc": null
          }
        ],
        "size": 128,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_MeshOffsetTable"
        }
      }
    },
    "PKG_ObjectNodeFixupView": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "node_type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "next_sibling_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "first_child_offset",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "node_fixup_type",
            "offset": 100,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags_65",
            "offset": 101,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "material_ref_count",
            "offset": 102,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "field_68",
            "offset": 104,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_refs_offset",
            "offset": 108,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "normals_or_list_offset",
            "offset": 112,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "uv_or_child_list_offset",
            "offset": 116,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_section_ptr",
            "offset": 120,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "material_indices_offset",
            "offset": 124,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "aux_offset_80",
            "offset": 128,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "aux_offset_84",
            "offset": 132,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "flags_88",
            "offset": 136,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "field_8c",
            "offset": 140,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "entries_offset_90",
            "offset": 144,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "entries_offset_94",
            "offset": 148,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "list_head_98",
            "offset": 152,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "list_head_9c",
            "offset": 156,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "field_a0",
            "offset": 160,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "list_head_a4",
            "offset": 164,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "animation_offset",
            "offset": 172,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "relocation_list_b0_offset",
            "offset": 176,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "render_entry_count",
            "offset": 186,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "secondary_entry_count",
            "offset": 187,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "render_entries_offset",
            "offset": 188,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "secondary_entries_offset",
            "offset": 192,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "subtype_c5",
            "offset": 197,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "extra_offset_c8",
            "offset": 200,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "linked_records_offset",
            "offset": 208,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "extra_offset_d8",
            "offset": 216,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "component_or_owner_offset",
            "offset": 244,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "global_texture_refs_offset",
            "offset": 248,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "relocation_list_100_offset",
            "offset": 256,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "owner_template_ptr",
            "offset": 260,
            "doc": null
          }
        ],
        "size": 264,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Fixup-time view of a packed object node used by the PKG_FixUpResourceObjectNode* family. Offset fields hold blob-relative positions before fixup and absolute pointers after; the per-type handlers only touch the fields their node_type uses.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_ObjectNodeFixupView"
        }
      }
    },
    "PKG_OpenAndReadTOC": {
      "function": {
        "analysis": {
          "en": {
            "address": 4452368,
            "rva": 258064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4457952,
            "rva": 263648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4457968,
            "rva": 263664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? 68 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 8D 4C 24 0C 68 ?? ?? ?? ?? 51 E8 ?? ?? ?? ?? 83",
          "match_offset": -13
        },
        "docs": "Opens the located pcdogs.pkg path, stores the package file handle globally, reads the package header into a temporary buffer, copies the TOC to the global package table, frees the temporary buffer, and returns FALSE only when the package cannot be opened.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 543,
          "symbol_index": 543,
          "accessor": "DTTR_PCDOGS_F_PKG_OpenAndReadTOC",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_OPEN_AND_READ_TOC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_OPEN_AND_READ_TOC"
        }
      }
    },
    "PKG_PolygonDataRaw": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "material_index",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "vertex_indices[4]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "uv_data_offset",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "render_flags",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "polygon_flags",
            "offset": 20,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_PolygonDataRaw"
        }
      }
    },
    "PKG_PolygonListEntry": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "material_index",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "vertex_indices[4]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "PKG_FaceNormal*",
            "name": "face_normal_ptr",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "flags",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "tex_coord_index",
            "offset": 18,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "reserved",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "sort_bias",
            "offset": 22,
            "doc": null
          }
        ],
        "size": 24,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_PolygonListEntry"
        }
      }
    },
    "PKG_ReleaseResourceManager": {
      "function": {
        "analysis": {
          "en": {
            "address": 4450496,
            "rva": 256192,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ClearTextureCache"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ClearTextureCache"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4455776,
            "rva": 261472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ClearTextureCache"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ClearTextureCache"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4455744,
            "rva": 261440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ClearTextureCache"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_ClearTextureCache"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UnloadResources"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "material_table",
              "type": "Material_Table*",
              "docs": "Material table whose loaded descriptors/surfaces are released or unmarked."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "F6 C5 08 75 ?? 50 E8 ??",
          "match_offset": -27
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 532,
          "symbol_index": 532,
          "accessor": "DTTR_PCDOGS_F_PKG_ReleaseResourceManager",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_RELEASE_RESOURCE_MANAGER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_RELEASE_RESOURCE_MANAGER"
        }
      }
    },
    "PKG_ResourceDirectory": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "material_blob_offset",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "mesh_node_root_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "level_data_offset",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Package resource directory for material, mesh-node, and level-data sections.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_ResourceDirectory"
        }
      }
    },
    "PKG_ResourceHeader": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "resource_type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "data_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "data_size",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "extra_offset",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 16,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "secondary_size",
            "offset": 20,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "info_1",
            "offset": 24,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "info_2",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved",
            "offset": 32,
            "doc": null
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Package header for one resource, including type, relocation fields, sizes, and flags. Resource-specific payloads are still undocumented.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_ResourceHeader"
        }
      }
    },
    "PKG_ResourceTitleBonusReplayResource": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838920,
            "rva": 644616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4849152,
            "rva": 654848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848576,
            "rva": 654272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_CleanupScreenResources"
            },
            "instr_offset": 12,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Title_CleanupScreenResources",
          "instr_offset": 12,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Title-screen bonus replay resource pointer freed during Title_CleanupScreenResources and assigned/used by title-screen load/update paths.",
        "sdk": {
          "id": 10,
          "symbol_index": 10,
          "accessor": "DTTR_PCDOGS_D_PKG_ResourceTitleBonusReplayResource",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_RESOURCE_TITLE_BONUS_REPLAY_RESOURCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_RESOURCE_TITLE_BONUS_REPLAY_RESOURCE"
        }
      }
    },
    "PKG_ResourceTitleMaterialBase": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838612,
            "rva": 644308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 85,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848844,
            "rva": 654540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 85,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848268,
            "rva": 653964,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 85,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_CleanupScreenResources"
            },
            "instr_offset": 47,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "PKG_LoadTitleScreenResources"
            },
            "instr_offset": 85,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Title_CleanupScreenResources",
          "instr_offset": 47,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Title-screen material/resource manager base released by PKG_ReleaseResourceManager during Title_CleanupScreenResources.",
        "sdk": {
          "id": 13,
          "symbol_index": 13,
          "accessor": "DTTR_PCDOGS_D_PKG_ResourceTitleMaterialBase",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_RESOURCE_TITLE_MATERIAL_BASE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_RESOURCE_TITLE_MATERIAL_BASE"
        }
      }
    },
    "PKG_ResourceTitlePackage": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838624,
            "rva": 644320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848856,
            "rva": 654552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848280,
            "rva": 653976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_CleanupScreenResources"
            },
            "instr_offset": 58,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "PKG_LoadTitleScreenResources"
            },
            "instr_offset": 62,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Title_CleanupScreenResources",
          "instr_offset": 58,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Title-screen resource package pointer freed by PKG_FreeResourceData during Title_CleanupScreenResources.",
        "sdk": {
          "id": 14,
          "symbol_index": 14,
          "accessor": "DTTR_PCDOGS_D_PKG_ResourceTitlePackage",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_RESOURCE_TITLE_PACKAGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_RESOURCE_TITLE_PACKAGE"
        }
      }
    },
    "PKG_ReturnResourceAlwaysTrue": {
      "function": {
        "analysis": {
          "en": {
            "address": 4451984,
            "rva": 257680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_LoadStateMachine"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint8_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": false,
        "resolver": {
          "kind": "aob",
          "pattern": "B0 01 C3 90 90 90 90 90 90 90 90 90 90 90 90 90 81 EC 10 01 00 00 57 68 ?? ?? ?? ?? 68 04 01 00 00 FF 15 ?? ?? ?? ??",
          "match_offset": 0
        },
        "docs": "Unsupported always-true package-resource stub.",
        "hook": {
          "kind": "unsupported",
          "patch_size": 0,
          "entry_patch_size": 0
        },
        "sdk": {
          "id": 705,
          "symbol_index": 705,
          "accessor": "DTTR_PCDOGS_F_PKG_ReturnResourceAlwaysTrue",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_RETURN_RESOURCE_ALWAYS_TRUE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_RETURN_RESOURCE_ALWAYS_TRUE"
        }
      }
    },
    "PKG_ScriptHeader": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "size_bytes[4]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "end_bytes[4]",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_ScriptHeader"
        }
      }
    },
    "PKG_ShutdownResourceGameSubsystems": {
      "function": {
        "analysis": {
          "en": {
            "address": 4376624,
            "rva": 182320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ReleaseDirectDrawDevice"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4380384,
            "rva": 186080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ReleaseDirectDrawDevice"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4380352,
            "rva": 186048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ReleaseDirectDrawDevice"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? E9 ?? ?? ?? ?? 90 90 90 90 90 90 51",
          "match_offset": 0
        },
        "docs": "Shuts down core game resource subsystems by releasing the DirectDraw device and tail-calling the memory extent leak/free sweep.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 373,
          "symbol_index": 373,
          "accessor": "DTTR_PCDOGS_F_PKG_ShutdownResourceGameSubsystems",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_SHUTDOWN_RESOURCE_GAME_SUBSYSTEMS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_SHUTDOWN_RESOURCE_GAME_SUBSYSTEMS"
        }
      }
    },
    "PKG_SoundResource": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "data_offset",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_SoundResource"
        }
      }
    },
    "PKG_SplashScreen": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "format_tag",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "pixel_data[1228800]",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 1228804,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_SplashScreen"
        }
      }
    },
    "PKG_SplashScreenEx": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "type_tag",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "data_offset",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved",
            "offset": 8,
            "doc": null
          },
          {
            "type": "char",
            "name": "name[16]",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "pixel_data[1228800]",
            "offset": 28,
            "doc": null
          }
        ],
        "size": 1228828,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_SplashScreenEx"
        }
      }
    },
    "PKG_SpriteAtlasResource": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "data_offset",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_SpriteAtlasResource"
        }
      }
    },
    "PKG_SpriteEntry": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "layer_index",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "control_flags",
            "offset": 2,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "texture_db1",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Graphics_SpriteContext*",
            "name": "sprite_ctx1",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Animation_FrameData*",
            "name": "anim_frames1",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "texture_db2",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Graphics_SpriteContext*",
            "name": "sprite_ctx2",
            "offset": 20,
            "doc": null
          },
          {
            "type": "Animation_FrameData*",
            "name": "anim_frames2",
            "offset": 24,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "scene_node_ref",
            "offset": 28,
            "doc": null
          },
          {
            "type": "Math_Vec2I16",
            "name": "move_start",
            "offset": 32,
            "doc": "Move-tween source X/Y position written by Script_OpAnimateSpriteMove."
          },
          {
            "type": "Math_Vec2I16",
            "name": "move_target",
            "offset": 36,
            "doc": "Move-tween target X/Y position."
          },
          {
            "type": "int32_t",
            "name": "move_start_frame",
            "offset": 40,
            "doc": "Move-tween start frame, paired with move_end_frame."
          },
          {
            "type": "int32_t",
            "name": "move_end_frame",
            "offset": 44,
            "doc": "Move-tween end frame, cleared after the target is reached."
          },
          {
            "type": "Math_EasePairI32",
            "name": "move_ease",
            "offset": 48,
            "doc": "Move-tween ease-in/ease-out percentages, stored in fp12 units."
          },
          {
            "type": "Math_Vec2I32",
            "name": "scale_start",
            "offset": 56,
            "doc": null
          },
          {
            "type": "Math_Vec2I32",
            "name": "scale_target",
            "offset": 64,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "scale_start_frame",
            "offset": 72,
            "doc": "Scale-tween start frame, paired with scale_end_frame."
          },
          {
            "type": "int32_t",
            "name": "scale_end_frame",
            "offset": 76,
            "doc": "Scale-tween end frame, cleared after the target is reached."
          },
          {
            "type": "Math_EasePairI32",
            "name": "scale_ease",
            "offset": 80,
            "doc": "Scale-tween ease-in/ease-out percentages, stored in fp12 units."
          },
          {
            "type": "Math_ColorRGB8",
            "name": "color_start",
            "offset": 88,
            "doc": "Color-tween source RGB snapshot."
          },
          {
            "type": "uint8_t",
            "name": "color_start_reserved_high",
            "offset": 91,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "color_target_word",
            "offset": 92,
            "doc": "Color-tween target/current color word, with low 24-bit RGB documented."
          },
          {
            "type": "int32_t",
            "name": "color_start_frame",
            "offset": 96,
            "doc": "Color-tween start frame, paired with color_end_frame."
          },
          {
            "type": "int32_t",
            "name": "color_end_frame",
            "offset": 100,
            "doc": "Color-tween end frame, cleared after the target is reached."
          },
          {
            "type": "Math_EasePairI32",
            "name": "color_ease",
            "offset": 104,
            "doc": "Color-tween ease-in/ease-out percentages, stored in fp12 units."
          },
          {
            "type": "int32_t",
            "name": "rotation_angle_fp12",
            "offset": 112,
            "doc": null
          },
          {
            "type": "Math_RectI16",
            "name": "bounds",
            "offset": 116,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "link_index",
            "offset": 124,
            "doc": "Index of the linked sprite entry this entry follows."
          },
          {
            "type": "uint8_t",
            "name": "anchor_code",
            "offset": 125,
            "doc": "Anchor/alignment code selecting how the screen position is derived."
          },
          {
            "type": "uint8_t",
            "name": "state_flags",
            "offset": 126,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "state_flags_reserved",
            "offset": 127,
            "doc": null
          },
          {
            "type": "Math_ColorRGB8",
            "name": "current_color",
            "offset": 128,
            "doc": "Current/fallback render color."
          },
          {
            "type": "uint8_t",
            "name": "current_color_reserved_high",
            "offset": 131,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "rotation_start_angle",
            "offset": 132,
            "doc": "Current/start rotation angle, eased toward rotation_target_angle."
          },
          {
            "type": "int32_t",
            "name": "rotation_target_angle",
            "offset": 136,
            "doc": "Target rotation angle, stored in fp12 units."
          },
          {
            "type": "int32_t",
            "name": "rotation_start_frame",
            "offset": 140,
            "doc": "Rotation-tween start frame, paired with rotation_end_frame."
          },
          {
            "type": "int32_t",
            "name": "rotation_end_frame",
            "offset": 144,
            "doc": "Rotation-tween end frame; nonzero keeps the script command waiting."
          },
          {
            "type": "Math_EasePairI32",
            "name": "rotation_ease",
            "offset": 148,
            "doc": "Rotation-tween ease-in/ease-out percentages, stored in fp12 units."
          },
          {
            "type": "Math_Vec2I32",
            "name": "current_scale",
            "offset": 156,
            "doc": null
          },
          {
            "type": "Math_ScreenPointI16",
            "name": "screen",
            "offset": 164,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "sort_key",
            "offset": 168,
            "doc": "Sprite depth/sort key, compared by UI_CompareSpriteDepth."
          },
          {
            "type": "int16_t",
            "name": "reserved_aa",
            "offset": 170,
            "doc": null
          }
        ],
        "size": 172,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Sprite/UI entry with two texture/context/frame layers plus move, scale, color, and rotation tween blocks; mutated by Script_OpSetSpriteProperty and Script_OpAnimateSpriteMove.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_SpriteEntry"
        }
      }
    },
    "PKG_SpriteEntryAltLayout": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "layer_index",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "control_flags",
            "offset": 2,
            "doc": null
          },
          {
            "type": "PKG_SpriteMaterialLayer",
            "name": "material_layers[2]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "scene_node_ref",
            "offset": 28,
            "doc": null
          },
          {
            "type": "Math_Vec2I16",
            "name": "base",
            "offset": 32,
            "doc": null
          },
          {
            "type": "Math_Vec2I16",
            "name": "offset",
            "offset": 36,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "move_start_time",
            "offset": 40,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "move_duration",
            "offset": 44,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "move_ease_a",
            "offset": 48,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "move_ease_b",
            "offset": 52,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "pos_base_val",
            "offset": 56,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "pos_delta_val",
            "offset": 60,
            "doc": null
          },
          {
            "type": "Math_Vec2I32",
            "name": "src_scale",
            "offset": 64,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "scale_start_time",
            "offset": 72,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "scale_duration",
            "offset": 76,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "scale_ease_a",
            "offset": 80,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "scale_ease_b",
            "offset": 84,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "src_color_r",
            "offset": 88,
            "doc": "Source RGB byte for color tween, read through the low 24-bit color path."
          },
          {
            "type": "uint8_t",
            "name": "src_color_g",
            "offset": 89,
            "doc": "Source RGB byte for color tween, read through the low 24-bit color path."
          },
          {
            "type": "uint8_t",
            "name": "src_color_b",
            "offset": 90,
            "doc": "Source RGB byte for color tween, read through the low 24-bit color path."
          },
          {
            "type": "uint8_t",
            "name": "padding_5b",
            "offset": 91,
            "doc": "Reserved high byte beside source RGB."
          },
          {
            "type": "int32_t",
            "name": "target_color_word",
            "offset": 92,
            "doc": "Target/current seed color word, with low 24-bit RGB documented."
          },
          {
            "type": "int32_t",
            "name": "color_start_time",
            "offset": 96,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "color_duration",
            "offset": 100,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "color_ease_a",
            "offset": 104,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "color_ease_b",
            "offset": 108,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "render_order",
            "offset": 112,
            "doc": null
          },
          {
            "type": "Math_RectI16",
            "name": "clip",
            "offset": 116,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "link_index",
            "offset": 124,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "anchor_code",
            "offset": 125,
            "doc": "Anchor dispatch selector 1..8 read by UI_UpdateAndRenderSprites."
          },
          {
            "type": "uint8_t",
            "name": "state_flags",
            "offset": 126,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding_7f",
            "offset": 127,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "cur_color_r",
            "offset": 128,
            "doc": "Current/fallback render RGB byte, rebuilt into the active color word."
          },
          {
            "type": "uint8_t",
            "name": "cur_color_g",
            "offset": 129,
            "doc": "Current/fallback render RGB byte, rebuilt into the active color word."
          },
          {
            "type": "uint8_t",
            "name": "cur_color_b",
            "offset": 130,
            "doc": "Current/fallback render RGB byte, rebuilt into the active color word."
          },
          {
            "type": "uint8_t",
            "name": "cur_color_reserved_high",
            "offset": 131,
            "doc": "Copied high byte of the current color word."
          },
          {
            "type": "int32_t",
            "name": "order_field_84",
            "offset": 132,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "dst_render_order",
            "offset": 136,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "order_start_time",
            "offset": 140,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "order_duration",
            "offset": 144,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "order_ease_a",
            "offset": 148,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "order_ease_b",
            "offset": 152,
            "doc": null
          },
          {
            "type": "Math_Vec2I32",
            "name": "cur_scale",
            "offset": 156,
            "doc": null
          },
          {
            "type": "Math_Vec2I16",
            "name": "screen",
            "offset": 164,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "frame_counter",
            "offset": 168,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "padding_aa",
            "offset": 170,
            "doc": null
          }
        ],
        "size": 172,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Alternate layout for the sprite/UI entry used by sprite-layer runtime data.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_SpriteEntryAltLayout"
        }
      }
    },
    "PKG_SpriteLayerBinding": {
      "type": {
        "members": [
          {
            "type": "void*",
            "name": "scene_node_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Graphics_SpriteContext*",
            "name": "sprite_context_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "void*",
            "name": "descriptor_aux_ptr",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_SpriteLayerBinding"
        }
      }
    },
    "PKG_SpriteMaterialLayer": {
      "type": {
        "members": [
          {
            "type": "Material_Entry*",
            "name": "texture_db",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Material_Entry*",
            "name": "material",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Animation_FrameData*",
            "name": "anim_frames",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_SpriteMaterialLayer"
        }
      }
    },
    "PKG_StringEntry": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "offset",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_StringEntry"
        }
      }
    },
    "PKG_TOCEntry": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "offset",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "size",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Package TOC entry used by the package table. Size-lane aliases share this storage.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_TOCEntry"
        }
      }
    },
    "PKG_TextureResource": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "data_offset",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_TextureResource"
        }
      }
    },
    "PKG_TrailListEntry": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "count",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "reserved",
            "offset": 2,
            "doc": null
          },
          {
            "type": "Component_TrailObject*",
            "name": "ptr",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_TrailListEntry"
        }
      }
    },
    "PKG_UILayoutEntry": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "element_id",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "element_type",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "param_a",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "param_b",
            "offset": 10,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "reserved",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_UILayoutEntry"
        }
      }
    },
    "PKG_UILayoutResource": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "checksum",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "entry_count",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "layout_padding[12]",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_UILayoutResource"
        }
      }
    },
    "PKG_UVCoord": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "u",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "v",
            "offset": 1,
            "doc": null
          }
        ],
        "size": 2,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_UVCoord"
        }
      }
    },
    "PKG_UnloadResourceGameData": {
      "function": {
        "analysis": {
          "en": {
            "address": 4271952,
            "rva": 77648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UnloadResourceGameData_LevelInitCallback1"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UnloadResourceGameData_LevelInitCallback2"
                },
                "instr_offset": 67,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_ClearTimedEventList"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 251,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4272432,
            "rva": 78128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UnloadResourceGameData_LevelInitCallback1"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UnloadResourceGameData_LevelInitCallback2"
                },
                "instr_offset": 67,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_ClearTimedEventList"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 261,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4272432,
            "rva": 78128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UnloadResourceGameData_LevelInitCallback1"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UnloadResourceGameData_LevelInitCallback2"
                },
                "instr_offset": 67,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_CleanupActors"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_ClearTimedEventList"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 261,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "PKG_UnloadResourceGameData_LevelInitCallback2"
            },
            "instr_offset": 67,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_UnloadResourceGameData_LevelInitCallback1"
            },
            "instr_offset": 61,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 33 F6 56 E8 ??",
          "match_offset": 0
        },
        "docs": "Unloads active game data, clears runtime callbacks/flags, and returns cleanup status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 179,
          "symbol_index": 179,
          "accessor": "DTTR_PCDOGS_F_PKG_UnloadResourceGameData",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_UNLOAD_RESOURCE_GAME_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_UNLOAD_RESOURCE_GAME_DATA"
        }
      }
    },
    "PKG_UnloadResourceGameData_LevelInitCallback1": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439944,
            "rva": 2245640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6450184,
            "rva": 2255880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449608,
            "rva": 2255304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_UnloadResourceGameData"
            },
            "instr_offset": 61,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "engine_managed",
        "docs": "Untyped native level cleanup/init callback slot touched by PKG_UnloadResourceGameData. Kept engine-managed and untyped until the callback signature is documented.",
        "sdk": {
          "id": 742,
          "symbol_index": 742,
          "accessor": "DTTR_PCDOGS_D_PKG_UnloadResourceGameData_LevelInitCallback1",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_UNLOAD_RESOURCE_GAME_DATA_LEVEL_INIT_CALLBACK1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_UNLOAD_RESOURCE_GAME_DATA_LEVEL_INIT_CALLBACK1"
        }
      }
    },
    "PKG_UnloadResourceGameData_LevelInitCallback2": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439940,
            "rva": 2245636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 67,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6450180,
            "rva": 2255876,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 67,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449604,
            "rva": 2255300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 67,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_UnloadResourceGameData"
            },
            "instr_offset": 67,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "engine_managed",
        "docs": "Untyped native level cleanup/init callback slot touched by PKG_UnloadResourceGameData. Kept engine-managed and untyped until the callback signature is documented.",
        "sdk": {
          "id": 741,
          "symbol_index": 741,
          "accessor": "DTTR_PCDOGS_D_PKG_UnloadResourceGameData_LevelInitCallback2",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_UNLOAD_RESOURCE_GAME_DATA_LEVEL_INIT_CALLBACK2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_UNLOAD_RESOURCE_GAME_DATA_LEVEL_INIT_CALLBACK2"
        }
      }
    },
    "PKG_UpdateLoadingScreen": {
      "function": {
        "analysis": {
          "en": {
            "address": 4378848,
            "rva": 184544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LastLoadingImageIndex"
                },
                "instr_offset": 19,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LoadingBlendTexturePtr"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LoadingFadeCounter"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LoadingScreenState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_ResourceLoadingImagePtr"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CheckDeviceLost"
                },
                "instr_offset": 541,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 560,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 417,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 618,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 646,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 531,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_InitializeTextureBlendTextures"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 346,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 595,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 610,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceAndReturnNull"
                },
                "instr_offset": 452,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 239,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 335,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 368,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 418,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4383312,
            "rva": 189008,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LastLoadingImageIndex"
                },
                "instr_offset": 19,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LoadingBlendTexturePtr"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LoadingFadeCounter"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LoadingScreenState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_ResourceLoadingImagePtr"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CheckDeviceLost"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 555,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 672,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_InitializeTextureBlendTextures"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 636,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceAndReturnNull"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 529,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 933,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 966,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 1017,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4383280,
            "rva": 188976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LastLoadingImageIndex"
                },
                "instr_offset": 19,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LoadingBlendTexturePtr"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LoadingFadeCounter"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_LoadingScreenState"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_UpdateLoadingScreen_ResourceLoadingImagePtr"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_CheckDeviceLost"
                },
                "instr_offset": 567,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 130,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_RenderTexturedQuad"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 555,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_FreeTextureBlend"
                },
                "instr_offset": 672,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_InitializeTextureBlendTextures"
                },
                "instr_offset": 61,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 636,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 14,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceAndReturnNull"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 155,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 529,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 933,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 966,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 1017,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "level_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "PKG_UpdateLoadingScreen_LoadingScreenState"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_UpdateLoadingScreen_LoadingBlendTexturePtr"
            },
            "instr_offset": 67,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_UpdateLoadingScreen_LoadingFadeCounter"
            },
            "instr_offset": 79,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_UpdateLoadingScreen_LastLoadingImageIndex"
            },
            "instr_offset": 19,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_UpdateLoadingScreen_ResourceLoadingImagePtr"
            },
            "instr_offset": 53,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A0 ?? ?? ?? ?? 53 33",
          "match_offset": 0
        },
        "docs": "Drives the four-state loading-screen machine: picks a random loading image, loads its resource, fades, and tears down; returns loading-screen status.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 388,
          "symbol_index": 388,
          "accessor": "DTTR_PCDOGS_F_PKG_UpdateLoadingScreen",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PKG_UPDATE_LOADING_SCREEN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PKG_UPDATE_LOADING_SCREEN"
        }
      }
    },
    "PKG_UpdateLoadingScreen_LastLoadingImageIndex": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832000,
            "rva": 637696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 19,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840904,
            "rva": 646600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 19,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840888,
            "rva": 646584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 19,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_UpdateLoadingScreen"
            },
            "instr_offset": 19,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 615,
          "symbol_index": 615,
          "accessor": "DTTR_PCDOGS_D_PKG_UpdateLoadingScreen_LastLoadingImageIndex",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_UPDATE_LOADING_SCREEN_LAST_LOADING_IMAGE_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_UPDATE_LOADING_SCREEN_LAST_LOADING_IMAGE_INDEX"
        }
      }
    },
    "PKG_UpdateLoadingScreen_LoadingBlendTexturePtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831984,
            "rva": 637680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840888,
            "rva": 646584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840872,
            "rva": 646568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_UpdateLoadingScreen"
            },
            "instr_offset": 67,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 609,
          "symbol_index": 609,
          "accessor": "DTTR_PCDOGS_D_PKG_UpdateLoadingScreen_LoadingBlendTexturePtr",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_UPDATE_LOADING_SCREEN_LOADING_BLEND_TEXTURE_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_UPDATE_LOADING_SCREEN_LOADING_BLEND_TEXTURE_PTR"
        }
      }
    },
    "PKG_UpdateLoadingScreen_LoadingFadeCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831992,
            "rva": 637688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840896,
            "rva": 646592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840880,
            "rva": 646576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 79,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_UpdateLoadingScreen"
            },
            "instr_offset": 79,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 611,
          "symbol_index": 611,
          "accessor": "DTTR_PCDOGS_D_PKG_UpdateLoadingScreen_LoadingFadeCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_UPDATE_LOADING_SCREEN_LOADING_FADE_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_UPDATE_LOADING_SCREEN_LOADING_FADE_COUNTER"
        }
      }
    },
    "PKG_UpdateLoadingScreen_LoadingScreenState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831976,
            "rva": 637672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840880,
            "rva": 646576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840864,
            "rva": 646560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_UpdateLoadingScreen"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 604,
          "symbol_index": 604,
          "accessor": "DTTR_PCDOGS_D_PKG_UpdateLoadingScreen_LoadingScreenState",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_UPDATE_LOADING_SCREEN_LOADING_SCREEN_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_UPDATE_LOADING_SCREEN_LOADING_SCREEN_STATE"
        }
      }
    },
    "PKG_UpdateLoadingScreen_ResourceLoadingImagePtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832004,
            "rva": 637700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840908,
            "rva": 646604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840892,
            "rva": 646588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "PKG_UpdateLoadingScreen"
            },
            "instr_offset": 53,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 616,
          "symbol_index": 616,
          "accessor": "DTTR_PCDOGS_D_PKG_UpdateLoadingScreen_ResourceLoadingImagePtr",
          "sdk_id": "DTTR_PCDOGS_DATA_PKG_UPDATE_LOADING_SCREEN_RESOURCE_LOADING_IMAGE_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PKG_UPDATE_LOADING_SCREEN_RESOURCE_LOADING_IMAGE_PTR"
        }
      }
    },
    "PKG_VertexData": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "pos",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "normal_group_index",
            "offset": 6,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "r",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "g",
            "offset": 9,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "b",
            "offset": 10,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "a",
            "offset": 11,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_VertexData"
        }
      }
    },
    "PKG_VertexNormalGroup": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "normal",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "padding",
            "offset": 6,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_PKG_VertexNormalGroup"
        }
      }
    },
    "Physics_ApplyGroundReaction": {
      "function": {
        "analysis": {
          "en": {
            "address": 4417648,
            "rva": 223344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 781,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4422704,
            "rva": 228400,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 781,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 501,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4422672,
            "rva": 228368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 781,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 501,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "physics_state",
              "type": "void*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "3B CA 89 4D F4 0F 84 ??",
          "match_offset": -17
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 447,
          "symbol_index": 447,
          "accessor": "DTTR_PCDOGS_F_Physics_ApplyGroundReaction",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PHYSICS_APPLY_GROUND_REACTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PHYSICS_APPLY_GROUND_REACTION"
        }
      }
    },
    "Physics_ApplyMovingPlatformForce": {
      "function": {
        "analysis": {
          "en": {
            "address": 4421824,
            "rva": 227520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1424,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4426880,
            "rva": 232576,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1424,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4426848,
            "rva": 232544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1424,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "platform_actor",
              "type": "Actor_State*"
            },
            {
              "name": "inout_velocity",
              "type": "int32_t*"
            },
            {
              "name": "inout_speed",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 5E 78 85 DB 0F 84 ??",
          "match_offset": -12
        },
        "docs": "Applies moving-platform velocity/force from platformActor into actor physics, updating the caller's velocity and speed in place.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 450,
          "symbol_index": 450,
          "accessor": "DTTR_PCDOGS_F_Physics_ApplyMovingPlatformForce",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PHYSICS_APPLY_MOVING_PLATFORM_FORCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PHYSICS_APPLY_MOVING_PLATFORM_FORCE"
        }
      }
    },
    "Physics_CalculateActorVelocity": {
      "function": {
        "analysis": {
          "en": {
            "address": 4418688,
            "rva": 224384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateRotationFromVelocity"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 1401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1888,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2503,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2560,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_ApplyMovingPlatformForce"
                },
                "instr_offset": 1424,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 798,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1896,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4423744,
            "rva": 229440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateRotationFromVelocity"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 1401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1888,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2503,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2560,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_ApplyMovingPlatformForce"
                },
                "instr_offset": 1424,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 798,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1896,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4423712,
            "rva": 229408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateRotationFromVelocity"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 477,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 1401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1888,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2503,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2560,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_ApplyMovingPlatformForce"
                },
                "instr_offset": 1424,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 798,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1896,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor whose physics component and velocity fields are updated."
            },
            {
              "name": "inout_velocity",
              "type": "Math_Vec3I32*",
              "docs": "Three-int velocity vector normalized, clamped, and copied back into the actor velocity fields."
            },
            {
              "name": "steering_vector",
              "type": "Math_Vec3I32*",
              "docs": "Three-int caller-provided steering/environment vector used by the velocity integration check."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "F4 00 00 00 8B 8F E8 ??",
          "match_offset": -21
        },
        "docs": "Calculates and applies the actor velocity from physics state, caller velocity, steering, ground, and slope inputs.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 449,
          "symbol_index": 449,
          "accessor": "DTTR_PCDOGS_F_Physics_CalculateActorVelocity",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PHYSICS_CALCULATE_ACTOR_VELOCITY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PHYSICS_CALCULATE_ACTOR_VELOCITY"
        }
      }
    },
    "Physics_CalculateFrictionForce": {
      "function": {
        "analysis": {
          "en": {
            "address": 4418496,
            "rva": 224192,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CheckGroundFriction"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1828,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1994,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4423552,
            "rva": 229248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CheckGroundFriction"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1828,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1994,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4423520,
            "rva": 229216,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_GetValidCollisionTarget"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CheckGroundFriction"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1828,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 1994,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 51 53 56 57 8B 7D 08 33 C0 8B 8F E8 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 448,
          "symbol_index": 448,
          "accessor": "DTTR_PCDOGS_F_Physics_CalculateFrictionForce",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PHYSICS_CALCULATE_FRICTION_FORCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PHYSICS_CALCULATE_FRICTION_FORCE"
        }
      }
    },
    "Physics_CalculateMovementWithCollision": {
      "function": {
        "analysis": {
          "en": {
            "address": 4345984,
            "rva": 151680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 2978,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 2606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 2736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3042,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3069,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4347920,
            "rva": 153616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 2978,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 2606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 2736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3042,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3069,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4347920,
            "rva": 153616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 2978,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 2606,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 2736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3042,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3069,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_CalculateFollowAngles"
                },
                "instr_offset": 3461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "from_pos",
              "type": "int32_t*"
            },
            {
              "name": "to_pos",
              "type": "int32_t*"
            },
            {
              "name": "basis_or_actor",
              "type": "void*"
            },
            {
              "name": "collision_radius",
              "type": "int16_t"
            },
            {
              "name": "collision_mode",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 8B 08 89 94 24 E8 ??",
          "match_offset": -174
        },
        "docs": "Builds a stack collision query from fromPos/toPos, optional matrix/basis fields, and radius thresholds, calls Collision_DetectActorCollisions, and returns 0x1000 minus the clipped travel fraction.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 287,
          "symbol_index": 287,
          "accessor": "DTTR_PCDOGS_F_Physics_CalculateMovementWithCollision",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PHYSICS_CALCULATE_MOVEMENT_WITH_COLLISION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PHYSICS_CALCULATE_MOVEMENT_WITH_COLLISION"
        }
      }
    },
    "Physics_CheckGroundFriction": {
      "function": {
        "analysis": {
          "en": {
            "address": 4232224,
            "rva": 37920,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 752,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4232688,
            "rva": 38384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 752,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4232688,
            "rva": 38384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_FindGroundPolygonUnderActor"
                },
                "instr_offset": 752,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor whose record/ground-friction state is checked and updated."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "71 ?? C9 75 ?? 50 E8 ??",
          "match_offset": -13
        },
        "docs": "Checks and updates the actor's ground-friction state, stores the friction result, and writes the resulting ground-status value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 82,
          "symbol_index": 82,
          "accessor": "DTTR_PCDOGS_F_Physics_CheckGroundFriction",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PHYSICS_CHECK_GROUND_FRICTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PHYSICS_CHECK_GROUND_FRICTION"
        }
      }
    },
    "Physics_CheckGroundSlopeDirection": {
      "function": {
        "analysis": {
          "en": {
            "address": 4232640,
            "rva": 38336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 759,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4233104,
            "rva": 38800,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 759,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4233104,
            "rva": 38800,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessCollisionResponse"
                },
                "instr_offset": 759,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileHit"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "collision_poly",
              "type": "Collision_Polygon*"
            },
            {
              "name": "out_normal",
              "type": "Math_Vec3I16*"
            },
            {
              "name": "delta_vec",
              "type": "Math_Vec3I32*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "D0 0C 83 F8 1C 0F 8E ??",
          "match_offset": -42
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 86,
          "symbol_index": 86,
          "accessor": "DTTR_PCDOGS_F_Physics_CheckGroundSlopeDirection",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PHYSICS_CHECK_GROUND_SLOPE_DIRECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PHYSICS_CHECK_GROUND_SLOPE_DIRECTION"
        }
      }
    },
    "Physics_ProcessActorCollision": {
      "function": {
        "analysis": {
          "en": {
            "address": 4239488,
            "rva": 45184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4239968,
            "rva": 45664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4239968,
            "rva": 45664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 305,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 487,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "other_actor",
              "type": "Actor_State*"
            },
            {
              "name": "collision_depth",
              "type": "int32_t",
              "docs": "Signed contact/penetration scalar used by collision response."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "85 C9 89 75 F8 0F 8C ??",
          "match_offset": -21
        },
        "docs": "Resolves collision overlap between actor and otherActor. collisionDepth is a signed contact/penetration scalar: negative values short-circuit handling, while non-negative values are shifted down by 6 and compared against actor radius/overlap terms before displacement and collision response state are applied.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 94,
          "symbol_index": 94,
          "accessor": "DTTR_PCDOGS_F_Physics_ProcessActorCollision",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PHYSICS_PROCESS_ACTOR_COLLISION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PHYSICS_PROCESS_ACTOR_COLLISION"
        }
      }
    },
    "Physics_State": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "gravity",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "friction",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "max_velocity",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "max_fall_speed",
            "offset": 12,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "acceleration",
            "offset": 16,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "ground_object",
            "offset": 28,
            "doc": null
          },
          {
            "type": "Collision_Polygon*",
            "name": "ground_polygon",
            "offset": 32,
            "doc": null
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Physics_State"
        }
      }
    },
    "Physics_UpdateActorBehavior": {
      "function": {
        "analysis": {
          "en": {
            "address": 4413104,
            "rva": 218800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4418160,
            "rva": 223856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4418128,
            "rva": 223824,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Model_UpdateTransformAndPhysics"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 83 C4 04 84 C0 74 ?? 56",
          "match_offset": -21
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 440,
          "symbol_index": 440,
          "accessor": "DTTR_PCDOGS_F_Physics_UpdateActorBehavior",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PHYSICS_UPDATE_ACTOR_BEHAVIOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PHYSICS_UPDATE_ACTOR_BEHAVIOR"
        }
      }
    },
    "Physics_UpdateActorPreprocess": {
      "function": {
        "analysis": {
          "en": {
            "address": 4410064,
            "rva": 215760,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Physics_UpdateActorPreprocess_MovementHandlerTable"
                },
                "instr_offset": 141,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 1614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 1642,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformBarycentricToWorldCoords"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4415120,
            "rva": 220816,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Physics_UpdateActorPreprocess_MovementHandlerTable"
                },
                "instr_offset": 141,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 1614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 1642,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformBarycentricToWorldCoords"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4415088,
            "rva": 220784,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Physics_UpdateActorPreprocess_MovementHandlerTable"
                },
                "instr_offset": 141,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 1281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 1614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Collision_DetectActorCollisions"
                },
                "instr_offset": 1642,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildMatrixRotationY"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_TransformBarycentricToWorldCoords"
                },
                "instr_offset": 390,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessActorToActorCollisions"
                },
                "instr_offset": 229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Physics_UpdateActorPreprocess_MovementHandlerTable"
            },
            "instr_offset": 141,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "42 65 01 75 ?? 8B 0D ??",
          "match_offset": -26
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 438,
          "symbol_index": 438,
          "accessor": "DTTR_PCDOGS_F_Physics_UpdateActorPreprocess",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PHYSICS_UPDATE_ACTOR_PREPROCESS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PHYSICS_UPDATE_ACTOR_PREPROCESS"
        }
      }
    },
    "Physics_UpdateActorPreprocess_MovementHandlerTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505680,
            "rva": 2311376,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 141,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515920,
            "rva": 2321616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 141,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515344,
            "rva": 2321040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_UpdateActorPreprocess"
                },
                "instr_offset": 141,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Physics_UpdateActorPreprocess"
            },
            "instr_offset": 141,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_BehaviorCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Physics_UpdateActorPreprocess",
          "instr_offset": 141,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Read-only base of the movement handler callback table indexed by actor movement/collision state.",
        "sdk": {
          "id": 762,
          "symbol_index": 762,
          "accessor": "DTTR_PCDOGS_D_Physics_UpdateActorPreprocess_MovementHandlerTable",
          "sdk_id": "DTTR_PCDOGS_DATA_PHYSICS_UPDATE_ACTOR_PREPROCESS_MOVEMENT_HANDLER_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PHYSICS_UPDATE_ACTOR_PREPROCESS_MOVEMENT_HANDLER_TABLE"
        }
      }
    },
    "Player_CollectPowerup": {
      "function": {
        "analysis": {
          "en": {
            "address": 4360944,
            "rva": 166640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameBackupPuppyCount"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_HandleCollection"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4363152,
            "rva": 168848,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameBackupPuppyCount"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateActorState"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4363152,
            "rva": 168848,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 80,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameBackupPuppyCount"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateActorState"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "powerup_type",
              "type": "int32_t",
              "docs": "Powerup kind byte from the collected powerup actor record, promoted to int32_t by the caller."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 83 FE 03 7F ?? A1 ??",
          "match_offset": 0
        },
        "docs": "Apply collection side effects for the supplied powerup type, including counter updates and puppy backup-count updates.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 344,
          "symbol_index": 344,
          "accessor": "DTTR_PCDOGS_F_Player_CollectPowerup",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PLAYER_COLLECT_POWERUP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PLAYER_COLLECT_POWERUP"
        }
      }
    },
    "Player_InitializeState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4360800,
            "rva": 166496,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Player_SetCompletionFlags"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetPlayerState"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4363008,
            "rva": 168704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Player_SetCompletionFlags"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetPlayerState"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4363008,
            "rva": 168704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Player_SetCompletionFlags"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetPlayerState"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "entity",
              "type": "Entity_State*",
              "docs": "Player entity; its linked actor receives refreshed completion flags."
            },
            {
              "name": "record",
              "type": "PKG_ActorRecord*",
              "docs": "Player actor record whose puppy/count fields are initialized from the backup puppy-count global."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "80 28 01 00 00 50 E8 ??",
          "match_offset": -44
        },
        "docs": "Initialize the player record's saved puppy/count fields and refresh completion flags on actor->linked_actor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 341,
          "symbol_index": 341,
          "accessor": "DTTR_PCDOGS_F_Player_InitializeState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PLAYER_INITIALIZE_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PLAYER_INITIALIZE_STATE"
        }
      }
    },
    "Player_ProcessMovement": {
      "function": {
        "analysis": {
          "en": {
            "address": 4233728,
            "rva": 39424,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_CameraYawAngle"
                },
                "instr_offset": 354,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_CurrentLevelID"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_FacingAngle"
                },
                "instr_offset": 345,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_InputLandingFlagsPtr"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 1802,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CalculateMovementVector"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 1125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 1427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 784,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1896,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 1828,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 1994,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_CheckBoneAvailable"
                },
                "instr_offset": 211,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4234192,
            "rva": 39888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_CameraYawAngle"
                },
                "instr_offset": 354,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_CurrentLevelID"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_FacingAngle"
                },
                "instr_offset": 345,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_InputLandingFlagsPtr"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 1802,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CalculateMovementVector"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 1125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 1427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 784,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1896,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 1828,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 1994,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4234192,
            "rva": 39888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_CameraYawAngle"
                },
                "instr_offset": 354,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_CurrentLevelID"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_FacingAngle"
                },
                "instr_offset": 345,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_ProcessMovement_InputLandingFlagsPtr"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 1802,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CalculateMovementVector"
                },
                "instr_offset": 370,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 1125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateDistance3DFP12"
                },
                "instr_offset": 1427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 784,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 1896,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 1828,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateFrictionForce"
                },
                "instr_offset": 1994,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor whose input-driven movement state is processed. Gameplay timing is cross-checked with render, behavior, camera, and collision signals."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Player_ProcessMovement_CurrentLevelID"
            },
            "instr_offset": 321,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Player_ProcessMovement_InputLandingFlagsPtr"
            },
            "instr_offset": 74,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Player_ProcessMovement_FacingAngle"
            },
            "instr_offset": 345,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Player_ProcessMovement_CameraYawAngle"
            },
            "instr_offset": 354,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 2C 53 8B 5D 08 56 A1 ??",
          "match_offset": 0
        },
        "docs": "Processes camera-relative player movement using player-facing angle, camera yaw, entity movement state, friction, velocity integration, and collision/trigger transitions.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 90,
          "symbol_index": 90,
          "accessor": "DTTR_PCDOGS_F_Player_ProcessMovement",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PLAYER_PROCESS_MOVEMENT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PLAYER_PROCESS_MOVEMENT"
        }
      }
    },
    "Player_ProcessMovement_CameraYawAngle": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439752,
            "rva": 2245448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 354,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449992,
            "rva": 2255688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 354,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449416,
            "rva": 2255112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 354,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Player_ProcessMovement"
            },
            "instr_offset": 354,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Player_ProcessMovement",
          "instr_offset": 354,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Packed camera yaw global used by Player_ProcessMovement. The high 16 bits hold the signed yaw angle; the low 16 bits are reserved, and a zero high word is a valid yaw sample.",
        "sdk": {
          "id": 735,
          "symbol_index": 735,
          "accessor": "DTTR_PCDOGS_D_Player_ProcessMovement_CameraYawAngle",
          "sdk_id": "DTTR_PCDOGS_DATA_PLAYER_PROCESS_MOVEMENT_CAMERA_YAW_ANGLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PLAYER_PROCESS_MOVEMENT_CAMERA_YAW_ANGLE"
        }
      }
    },
    "Player_ProcessMovement_CurrentLevelID": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525864,
            "rva": 331560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534042,
            "rva": 339738,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534042,
            "rva": 339738,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 321,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Player_ProcessMovement"
            },
            "instr_offset": 321,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Player_ProcessMovement",
          "instr_offset": 321,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Canonical live runtime level id read from the player/gameplay global.",
        "sdk": {
          "id": 221,
          "symbol_index": 221,
          "accessor": "DTTR_PCDOGS_D_Player_ProcessMovement_CurrentLevelID",
          "sdk_id": "DTTR_PCDOGS_DATA_PLAYER_PROCESS_MOVEMENT_CURRENT_LEVEL_ID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PLAYER_PROCESS_MOVEMENT_CURRENT_LEVEL_ID"
        }
      }
    },
    "Player_ProcessMovement_FacingAngle": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439750,
            "rva": 2245446,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 345,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449990,
            "rva": 2255686,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 345,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449414,
            "rva": 2255110,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 345,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Player_ProcessMovement"
            },
            "instr_offset": 345,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 734,
          "symbol_index": 734,
          "accessor": "DTTR_PCDOGS_D_Player_ProcessMovement_FacingAngle",
          "sdk_id": "DTTR_PCDOGS_DATA_PLAYER_PROCESS_MOVEMENT_FACING_ANGLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PLAYER_PROCESS_MOVEMENT_FACING_ANGLE"
        }
      }
    },
    "Player_ProcessMovement_InputLandingFlagsPtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541136,
            "rva": 346832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549364,
            "rva": 355060,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549364,
            "rva": 355060,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Player_ProcessMovement"
            },
            "instr_offset": 74,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 301,
          "symbol_index": 301,
          "accessor": "DTTR_PCDOGS_D_Player_ProcessMovement_InputLandingFlagsPtr",
          "sdk_id": "DTTR_PCDOGS_DATA_PLAYER_PROCESS_MOVEMENT_INPUT_LANDING_FLAGS_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PLAYER_PROCESS_MOVEMENT_INPUT_LANDING_FLAGS_PTR"
        }
      }
    },
    "Player_ResetBoneCount": {
      "function": {
        "analysis": {
          "en": {
            "address": 4360928,
            "rva": 166624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4363136,
            "rva": 168832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4363136,
            "rva": 168832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "current_entity",
              "type": "Entity_State*",
              "docs": "Unused ABI slot; the respawn caller passes the current entity before the record."
            },
            {
              "name": "record",
              "type": "PKG_ActorRecord*",
              "docs": "Player record whose counter is reset to 4."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 C7 40 74 04 00 00 00 C3 90 90 90 90 56 8B 74 24 08 83 FE 03 7F ?? A1 ??",
          "match_offset": 0
        },
        "docs": "Resets the player bone counter to 4 and returns the player record pointer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 11,
          "entry_patch_size": 11
        },
        "sdk": {
          "id": 343,
          "symbol_index": 343,
          "accessor": "DTTR_PCDOGS_F_Player_ResetBoneCount",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PLAYER_RESET_BONE_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PLAYER_RESET_BONE_COUNT"
        }
      }
    },
    "Player_RespawnAfterDeath": {
      "function": {
        "analysis": {
          "en": {
            "address": 4239136,
            "rva": 44832,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Player_RespawnAfterDeath_IsLoadingLevel"
                },
                "instr_offset": 88,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_RespawnAfterDeath_ScreenFadeDuration"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CopyEntityDefaultsToRecord"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 259,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_ResetBonusState"
                },
                "instr_offset": 231,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_ResetBoneCount"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameBackupPuppyCount"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1203,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4239616,
            "rva": 45312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Player_RespawnAfterDeath_IsLoadingLevel"
                },
                "instr_offset": 88,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_RespawnAfterDeath_ScreenFadeDuration"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CopyEntityDefaultsToRecord"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 259,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_ResetBoneCount"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameBackupPuppyCount"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1206,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4239616,
            "rva": 45312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Player_RespawnAfterDeath_IsLoadingLevel"
                },
                "instr_offset": 88,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Player_RespawnAfterDeath_ScreenFadeDuration"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CopyEntityDefaultsToRecord"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 259,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_MoveToTarget"
                },
                "instr_offset": 332,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_ResetBoneCount"
                },
                "instr_offset": 177,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameBackupPuppyCount"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 1206,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "current_entity",
              "type": "Entity_State*",
              "docs": "Current entity whose respawn target and flags are used."
            },
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Player actor being reset and moved to the respawn target."
            },
            {
              "name": "record",
              "type": "PKG_ActorRecord*",
              "docs": "Player actor record containing backup-puppy and respawn state fields."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Player_RespawnAfterDeath_ScreenFadeDuration"
            },
            "instr_offset": 105,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Player_RespawnAfterDeath_IsLoadingLevel"
            },
            "instr_offset": 88,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 56 8B 74 24 14 33 DB 66 89 1D ??",
          "match_offset": 0
        },
        "docs": "Handles the player-death respawn transition by updating life state, saving progress, and either entering pause/game-over state or reinitializing placement and sound.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 93,
          "symbol_index": 93,
          "accessor": "DTTR_PCDOGS_F_Player_RespawnAfterDeath",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PLAYER_RESPAWN_AFTER_DEATH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PLAYER_RESPAWN_AFTER_DEATH"
        }
      }
    },
    "Player_RespawnAfterDeath_IsLoadingLevel": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507279,
            "rva": 2312975,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 88,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518543,
            "rva": 2324239,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 88,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517967,
            "rva": 2323663,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 88,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Player_RespawnAfterDeath"
            },
            "instr_offset": 88,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 822,
          "symbol_index": 822,
          "accessor": "DTTR_PCDOGS_D_Player_RespawnAfterDeath_IsLoadingLevel",
          "sdk_id": "DTTR_PCDOGS_DATA_PLAYER_RESPAWN_AFTER_DEATH_IS_LOADING_LEVEL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PLAYER_RESPAWN_AFTER_DEATH_IS_LOADING_LEVEL"
        }
      }
    },
    "Player_RespawnAfterDeath_ScreenFadeDuration": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507276,
            "rva": 2312972,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518540,
            "rva": 2324236,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517964,
            "rva": 2323660,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 105,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Player_RespawnAfterDeath"
            },
            "instr_offset": 105,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 820,
          "symbol_index": 820,
          "accessor": "DTTR_PCDOGS_D_Player_RespawnAfterDeath_ScreenFadeDuration",
          "sdk_id": "DTTR_PCDOGS_DATA_PLAYER_RESPAWN_AFTER_DEATH_SCREEN_FADE_DURATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PLAYER_RESPAWN_AFTER_DEATH_SCREEN_FADE_DURATION"
        }
      }
    },
    "Player_SetCompletionFlags": {
      "function": {
        "analysis": {
          "en": {
            "address": 4360864,
            "rva": 166560,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Save_IsGameComplete"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_InitializeState"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4363072,
            "rva": 168768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Save_IsGameComplete"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_InitializeState"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4363072,
            "rva": 168768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Save_IsGameComplete"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_InitializeState"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Player actor whose behavior_flags completion-state bits are refreshed."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 00 FF FF FF 3F E8 ??",
          "match_offset": -9
        },
        "docs": "Clear actor completion-state bits, then set the game-complete or in-progress flag from Save_IsGameComplete.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 342,
          "symbol_index": 342,
          "accessor": "DTTR_PCDOGS_F_Player_SetCompletionFlags",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_PLAYER_SET_COMPLETION_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_PLAYER_SET_COMPLETION_FLAGS"
        }
      }
    },
    "Powerup_Cleanup": {
      "function": {
        "analysis": {
          "en": {
            "address": 4453632,
            "rva": 259328,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 457,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4459216,
            "rva": 264912,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 467,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4459232,
            "rva": 264928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_DestroyAll"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 467,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 35 ?? ?? ?? ?? 85 F6 74 ?? 57 C7 05 ?? ?? 63",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 548,
          "symbol_index": 548,
          "accessor": "DTTR_PCDOGS_F_Powerup_Cleanup",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_POWERUP_CLEANUP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_POWERUP_CLEANUP"
        }
      }
    },
    "Powerup_CloneActorFromTemplate": {
      "function": {
        "analysis": {
          "en": {
            "address": 4453696,
            "rva": 259392,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4459280,
            "rva": 264976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4459296,
            "rva": 264992,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "actor_template",
              "type": "PKG_ActorTemplate*",
              "docs": "Powerup actor-template/clone-source selected from Level_RuntimeData.powerup_actor_template_slots[0..15]; nullptr or a failed clone returns nullptr."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "68 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4 08 85",
          "match_offset": -10
        },
        "docs": "Clones a level-owned powerup actor template into the live powerup actor list. The source template comes from the fixed 16-slot powerup_actor_template_slots table; spawned live actors are linked through Powerup_LiveActorListHead.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 549,
          "symbol_index": 549,
          "accessor": "DTTR_PCDOGS_F_Powerup_CloneActorFromTemplate",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_POWERUP_CLONE_ACTOR_FROM_TEMPLATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_POWERUP_CLONE_ACTOR_FROM_TEMPLATE"
        }
      }
    },
    "Powerup_CollisionCallback": {
      "type": {
        "ret": "int32_t",
        "params": [
          {
            "type": "Actor_State*",
            "name": "powerup_actor",
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "other_actor",
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "reserved_zero",
            "doc": "Reserved argument slot used as zero at the powerup collision dispatch site."
          },
          {
            "type": "int32_t",
            "name": "collision_result",
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "function_type_alias",
        "docs": "Four-argument powerup collision filter callback initialized by Powerup_InitializeSystem; Powerup_CollisionFilter consumes the fourth collision_result argument and ignores the zero third slot.",
        "calling_convention": "cdecl",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Powerup_CollisionCallback"
        }
      }
    },
    "Powerup_CollisionFilterCallback": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832716,
            "rva": 638412,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 3,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841620,
            "rva": 647316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 3,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841604,
            "rva": 647300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 3,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_ProcessPowerupCollisions"
            },
            "instr_offset": 3,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Powerup_CollisionCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Collision_ProcessPowerupCollisions",
          "instr_offset": 3,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Four-argument Powerup collision filter callback slot initialized by Powerup_InitializeSystem; Collision_ProcessPowerupCollisions passes (powerup_actor, actor, 0, -2).",
        "sdk": {
          "id": 642,
          "symbol_index": 642,
          "accessor": "DTTR_PCDOGS_D_Powerup_CollisionFilterCallback",
          "sdk_id": "DTTR_PCDOGS_DATA_POWERUP_COLLISION_FILTER_CALLBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_POWERUP_COLLISION_FILTER_CALLBACK"
        }
      }
    },
    "Powerup_Entry": {
      "type": {
        "members": [
          {
            "type": "Actor_State*",
            "name": "attach_parent_actor",
            "offset": 0,
            "doc": "Parent live actor this powerup entry is attached to (previously misread as a template/record pointer)."
          },
          {
            "type": "int16_t",
            "name": "spawn_params_a",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "spawn_params_b",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "runtime_value_08",
            "offset": 8,
            "doc": "Powerup-list dword whose low 16 bits are used by attached/local-position paths."
          },
          {
            "type": "uint8_t",
            "name": "powerup_type",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 13,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "spawn_signal_id",
            "offset": 14,
            "doc": "Signal id raised on spawn (previously misread as a max spawn count)."
          },
          {
            "type": "Math_Vec3I32",
            "name": "pos",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 28,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Level_RuntimeData.powerup_list entry walked by Powerup_UpdateSpawnLogic with attach_parent_actor, flags, spawn_signal_id, pos vector field.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Powerup_Entry"
        }
      }
    },
    "Powerup_HandleCollection": {
      "function": {
        "analysis": {
          "en": {
            "address": 4454784,
            "rva": 260480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_HandleCollection_SpawnDelay"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_CollectPowerup"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessHazardsAndDamage"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_HandleCollection_SpawnDelay"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_HandleCollection_SpawnDelay"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t",
          "params": [
            {
              "name": "powerup_actor",
              "type": "Actor_State*"
            },
            {
              "name": "collector_actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Powerup_HandleCollection_SpawnDelay"
            },
            "instr_offset": 92,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 F6 47 0D 20 0F 84 ??",
          "match_offset": -12
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 553,
          "symbol_index": 553,
          "accessor": "DTTR_PCDOGS_F_Powerup_HandleCollection",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_POWERUP_HANDLE_COLLECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_POWERUP_HANDLE_COLLECTION"
        }
      }
    },
    "Powerup_HandleCollection_SpawnDelay": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505700,
            "rva": 2311396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_HandleCollection"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_HandleCollection"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_HandleCollection"
                },
                "instr_offset": 92,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Powerup_HandleCollection"
            },
            "instr_offset": 92,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 767,
          "symbol_index": 767,
          "accessor": "DTTR_PCDOGS_D_Powerup_HandleCollection_SpawnDelay",
          "sdk_id": "DTTR_PCDOGS_DATA_POWERUP_HANDLE_COLLECTION_SPAWN_DELAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_POWERUP_HANDLE_COLLECTION_SPAWN_DELAY"
        }
      }
    },
    "Powerup_InitializeSystem": {
      "function": {
        "analysis": {
          "en": {
            "address": 4454480,
            "rva": 260176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_InitializeSystem_UpdateCallback"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 880,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4460064,
            "rva": 265760,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_InitializeSystem_UpdateCallback"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 890,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4460080,
            "rva": 265776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Powerup_InitializeSystem_UpdateCallback"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 890,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Powerup_InitializeSystem_UpdateCallback"
            },
            "instr_offset": 9,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 15 ?? ?? ?? ?? 56 85",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 551,
          "symbol_index": 551,
          "accessor": "DTTR_PCDOGS_F_Powerup_InitializeSystem",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_POWERUP_INITIALIZE_SYSTEM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_POWERUP_INITIALIZE_SYSTEM"
        }
      }
    },
    "Powerup_InitializeSystem_UpdateCallback": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505664,
            "rva": 2311360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_InitializeSystem"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515904,
            "rva": 2321600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_InitializeSystem"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515328,
            "rva": 2321024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_InitializeSystem"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Powerup_InitializeSystem"
            },
            "instr_offset": 9,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Powerup_UpdateCallback",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Powerup_InitializeSystem",
          "instr_offset": 9,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Powerup actor update callback slot initialized by Powerup_InitializeSystem.",
        "sdk": {
          "id": 761,
          "symbol_index": 761,
          "accessor": "DTTR_PCDOGS_D_Powerup_InitializeSystem_UpdateCallback",
          "sdk_id": "DTTR_PCDOGS_DATA_POWERUP_INITIALIZE_SYSTEM_UPDATE_CALLBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_POWERUP_INITIALIZE_SYSTEM_UPDATE_CALLBACK"
        }
      }
    },
    "Powerup_LiveActorListHead": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505696,
            "rva": 2311392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515936,
            "rva": 2321632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515360,
            "rva": 2321056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessPowerupCollisions"
                },
                "instr_offset": 9,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Collision_ProcessPowerupCollisions"
            },
            "instr_offset": 9,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Live powerup actor list head linked by Powerup_CloneActorFromTemplate.",
        "sdk": {
          "id": 766,
          "symbol_index": 766,
          "accessor": "DTTR_PCDOGS_D_Powerup_LiveActorListHead",
          "sdk_id": "DTTR_PCDOGS_DATA_POWERUP_LIVE_ACTOR_LIST_HEAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_POWERUP_LIVE_ACTOR_LIST_HEAD"
        }
      }
    },
    "Powerup_SpawnActorFromEntry": {
      "function": {
        "analysis": {
          "en": {
            "address": 4454016,
            "rva": 259712,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_CloneActorFromTemplate"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateActorState"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4459600,
            "rva": 265296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_CloneActorFromTemplate"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateActorState"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4459616,
            "rva": 265312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AttachToParent"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_CloneActorFromTemplate"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateActorState"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Actor_State*",
          "params": [
            {
              "name": "powerup_entry",
              "type": "Powerup_Entry*",
              "docs": "Powerup spawn entry containing flags, type id, local/world position, and optional parent actor record pointer."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "33 C0 8A 47 0C 8B 0D ??",
          "match_offset": -24
        },
        "docs": "Spawns/clones the actor selected by a Powerup_Entry spawn record, resolves attached/local positions when needed, initializes runtime actor flags, and stores the source entry on the spawned actor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 550,
          "symbol_index": 550,
          "accessor": "DTTR_PCDOGS_F_Powerup_SpawnActorFromEntry",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_POWERUP_SPAWN_ACTOR_FROM_ENTRY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_POWERUP_SPAWN_ACTOR_FROM_ENTRY"
        }
      }
    },
    "Powerup_UpdateActorState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4454576,
            "rva": 260272,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4460160,
            "rva": 265856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_CollectPowerup"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 330,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4460176,
            "rva": 265872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_QueueStateChange"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Player_CollectPowerup"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 330,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint8_t",
          "params": [
            {
              "name": "powerup_actor",
              "type": "Actor_State*",
              "docs": "Live powerup actor. In this path the actor record/source slot at Actor_State can point back to the Powerup_Entry that spawned the actor."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "4E 65 20 EB ?? 56 E8 ??",
          "match_offset": -26
        },
        "docs": "Live powerup actor update/respawn callback installed by Powerup_InitializeSystem. It operates on spawned Actor_State nodes from the live powerup actor list.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 552,
          "symbol_index": 552,
          "accessor": "DTTR_PCDOGS_F_Powerup_UpdateActorState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_POWERUP_UPDATE_ACTOR_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_POWERUP_UPDATE_ACTOR_STATE"
        }
      }
    },
    "Powerup_UpdateCallback": {
      "type": {
        "ret": "uint8_t",
        "params": [
          {
            "type": "Actor_State*",
            "name": "actor",
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "function_type_alias",
        "docs": "Powerup actor update callback slot initialized by Powerup_InitializeSystem.",
        "calling_convention": "cdecl",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Powerup_UpdateCallback"
        }
      }
    },
    "Powerup_UpdateLiveActorList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4209536,
            "rva": 15232,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1518,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4209984,
            "rva": 15680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1518,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4209984,
            "rva": 15680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_Destroy"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_UpdateActorBehavior"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1518,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 35 ?? ?? ?? ?? 57 BF ?? ?? ?? ?? 85 F6 74",
          "match_offset": 0
        },
        "docs": "Walks Powerup_LiveActorListHead, updates live powerup Actor_State nodes through physics/render paths, and removes collected or expired powerup actors using the powerup lifecycle policy.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 46,
          "symbol_index": 46,
          "accessor": "DTTR_PCDOGS_F_Powerup_UpdateLiveActorList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_POWERUP_UPDATE_LIVE_ACTOR_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_POWERUP_UPDATE_LIVE_ACTOR_LIST"
        }
      }
    },
    "Powerup_UpdateSpawnLogic": {
      "function": {
        "analysis": {
          "en": {
            "address": 4453728,
            "rva": 259424,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 211,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2566,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4459312,
            "rva": 265008,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 211,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2566,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4459328,
            "rva": 265024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 211,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_SpawnActorFromEntry"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2566,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 0C A1 ?? ??",
          "match_offset": 0
        },
        "docs": "Walks current Level_RuntimeData.powerup_list spawn entries, updates Powerup_Entry flags/counts, gates spawning through input/signal/frustum/parent checks, and calls Powerup_SpawnActorFromEntry. The fixed PKG_ActorTemplate* clone-source slots at Level_RuntimeData.powerup_actor_template_slots[0..15] are initialized elsewhere.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 704,
          "symbol_index": 704,
          "accessor": "DTTR_PCDOGS_F_Powerup_UpdateSpawnLogic",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_POWERUP_UPDATE_SPAWN_LOGIC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_POWERUP_UPDATE_SPAWN_LOGIC"
        }
      }
    },
    "Projectile_LiveActorListHead": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831788,
            "rva": 23637484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 3943482499,
            "rva": 3939288195,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 3943482499,
            "rva": 3939288195,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_SpawnFromEntry"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_SpawnFromEntry"
            },
            "instr_offset": 92,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Live projectile Actor_State linked-list head populated by Trail_SpawnFromEntry and walked by Actor_UpdateProjectileList.",
        "sdk": {
          "id": 970,
          "symbol_index": 970,
          "accessor": "DTTR_PCDOGS_D_Projectile_LiveActorListHead",
          "sdk_id": "DTTR_PCDOGS_DATA_PROJECTILE_LIVE_ACTOR_LIST_HEAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_PROJECTILE_LIVE_ACTOR_LIST_HEAD"
        }
      }
    },
    "Replay_BonusReplayLevelIDs": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525892,
            "rva": 331588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 97,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534072,
            "rva": 339768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 97,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534072,
            "rva": 339768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 97,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Replay_LoadBonusReplay"
            },
            "instr_offset": 97,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Bonus replay level-id table read by Replay_LoadBonusReplay.",
        "sdk": {
          "id": 223,
          "symbol_index": 223,
          "accessor": "DTTR_PCDOGS_D_Replay_BonusReplayLevelIDs",
          "sdk_id": "DTTR_PCDOGS_DATA_REPLAY_BONUS_REPLAY_LEVEL_I_DS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_REPLAY_BONUS_REPLAY_LEVEL_I_DS"
        }
      }
    },
    "Replay_DemoBonusReplayDataTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505592,
            "rva": 2311288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515832,
            "rva": 2321528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515256,
            "rva": 2320952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Replay_LoadBonusReplay"
            },
            "instr_offset": 36,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Demo bonus-replay data table consumed by replay loading; name avoids the generic Data suffix.",
        "sdk": {
          "id": 749,
          "symbol_index": 749,
          "accessor": "DTTR_PCDOGS_D_Replay_DemoBonusReplayDataTable",
          "sdk_id": "DTTR_PCDOGS_DATA_REPLAY_DEMO_BONUS_REPLAY_DATA_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_REPLAY_DEMO_BONUS_REPLAY_DATA_TABLE"
        }
      }
    },
    "Replay_LoadBonusReplay": {
      "function": {
        "analysis": {
          "en": {
            "address": 4379520,
            "rva": 185216,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_BonusReplayLevelIDs"
                },
                "instr_offset": 97,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_DemoBonusReplayDataTable"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_LoadBonusReplay_Index"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4384016,
            "rva": 189712,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_BonusReplayLevelIDs"
                },
                "instr_offset": 97,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_DemoBonusReplayDataTable"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_LoadBonusReplay_Index"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 949,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 982,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 865,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 989,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 1041,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_InitializeColorGradient"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 884,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 581,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 529,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 933,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 966,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 1017,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_CheckContinueSlotLanguage"
                },
                "instr_offset": 413,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitializeGameState"
                },
                "instr_offset": 734,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 287,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 319,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 422,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetLanguage"
                },
                "instr_offset": 360,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetLanguage"
                },
                "instr_offset": 460,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetLanguage"
                },
                "instr_offset": 563,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4383984,
            "rva": 189680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_BonusReplayLevelIDs"
                },
                "instr_offset": 97,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_DemoBonusReplayDataTable"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_LoadBonusReplay_Index"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 949,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 982,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopAllSounds"
                },
                "instr_offset": 865,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 989,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 1041,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_InitializeColorGradient"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 800,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 884,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 581,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 529,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 933,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 966,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 1017,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_CheckContinueSlotLanguage"
                },
                "instr_offset": 413,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitializeGameState"
                },
                "instr_offset": 734,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 287,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 319,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 422,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetLanguage"
                },
                "instr_offset": 360,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetLanguage"
                },
                "instr_offset": 460,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetLanguage"
                },
                "instr_offset": 563,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "bonus_replay_resource",
              "type": "uint8_t*",
              "docs": "Base of the packed bonus-replay resource; null only queries whether the replay buffer already exists."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Replay_BonusReplayLevelIDs"
            },
            "instr_offset": 97,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Replay_LoadBonusReplay_Index"
            },
            "instr_offset": 13,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Replay_DemoBonusReplayDataTable"
            },
            "instr_offset": 36,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 85 F6 0F 84 ??",
          "match_offset": 0
        },
        "docs": "Allocates/updates the replay buffer, selects the next bonus replay, copies its payload, and returns whether replay data is available.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 389,
          "symbol_index": 389,
          "accessor": "DTTR_PCDOGS_F_Replay_LoadBonusReplay",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_REPLAY_LOAD_BONUS_REPLAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_REPLAY_LOAD_BONUS_REPLAY"
        }
      }
    },
    "Replay_LoadBonusReplay_Index": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525916,
            "rva": 331612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534096,
            "rva": 339792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534096,
            "rva": 339792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Replay_LoadBonusReplay"
            },
            "instr_offset": 13,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 224,
          "symbol_index": 224,
          "accessor": "DTTR_PCDOGS_D_Replay_LoadBonusReplay_Index",
          "sdk_id": "DTTR_PCDOGS_DATA_REPLAY_LOAD_BONUS_REPLAY_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_REPLAY_LOAD_BONUS_REPLAY_INDEX"
        }
      }
    },
    "Replay_StartDemoPlayback": {
      "function": {
        "analysis": {
          "en": {
            "address": 4468912,
            "rva": 274608,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_StartDemoPlayback_InputPtr"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_StartDemoPlayback_SavedRandomSeed"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4476128,
            "rva": 281824,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_StartDemoPlayback_InputPtr"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_StartDemoPlayback_SavedRandomSeed"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4476064,
            "rva": 281760,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_StartDemoPlayback_InputPtr"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Replay_StartDemoPlayback_SavedRandomSeed"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_TransitionToLevel"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Replay_StartDemoPlayback_InputPtr"
            },
            "instr_offset": 14,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Replay_StartDemoPlayback_SavedRandomSeed"
            },
            "instr_offset": 30,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 74 ?? 8B 48",
          "match_offset": 0
        },
        "docs": "Starts demo playback from loaded replay data by installing the input frame pointer, saving/restoring random seed state, and setting the input replay flag.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 601,
          "symbol_index": 601,
          "accessor": "DTTR_PCDOGS_F_Replay_StartDemoPlayback",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_REPLAY_START_DEMO_PLAYBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_REPLAY_START_DEMO_PLAYBACK"
        }
      }
    },
    "Replay_StartDemoPlayback_InputPtr": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838012,
            "rva": 643708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848244,
            "rva": 653940,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4847668,
            "rva": 653364,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 14,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Replay_StartDemoPlayback"
            },
            "instr_offset": 14,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Replay_StartDemoPlayback",
          "instr_offset": 14,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Pointer to the current demo replay input-frame stream, loaded from replay_data[1] by Replay_StartDemoPlayback when replay playback begins.",
        "sdk": {
          "id": 707,
          "symbol_index": 707,
          "accessor": "DTTR_PCDOGS_D_Replay_StartDemoPlayback_InputPtr",
          "sdk_id": "DTTR_PCDOGS_DATA_REPLAY_START_DEMO_PLAYBACK_INPUT_PTR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_REPLAY_START_DEMO_PLAYBACK_INPUT_PTR"
        }
      }
    },
    "Replay_StartDemoPlayback_SavedRandomSeed": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505536,
            "rva": 2311232,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515776,
            "rva": 2321472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515200,
            "rva": 2320896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_StartDemoPlayback"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Replay_StartDemoPlayback"
            },
            "instr_offset": 30,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 746,
          "symbol_index": 746,
          "accessor": "DTTR_PCDOGS_D_Replay_StartDemoPlayback_SavedRandomSeed",
          "sdk_id": "DTTR_PCDOGS_DATA_REPLAY_START_DEMO_PLAYBACK_SAVED_RANDOM_SEED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_REPLAY_START_DEMO_PLAYBACK_SAVED_RANDOM_SEED"
        }
      }
    },
    "Replay_StopDemoPlayback": {
      "function": {
        "analysis": {
          "en": {
            "address": 4468976,
            "rva": 274672,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 344,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4476192,
            "rva": 281888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4476128,
            "rva": 281824,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_SetRandomSeed"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_Update"
                },
                "instr_offset": 128,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 15 ?? ?? ?? ?? A1 ?? ?? ?? ?? 83 E2 DF 85 C0 89 15 ?? ?? ?? ?? 74 ??",
          "match_offset": 0
        },
        "docs": "Clears demo playback input mode, frees loaded replay data when present, clears the replay data pointer, and restores the saved random seed.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 602,
          "symbol_index": 602,
          "accessor": "DTTR_PCDOGS_F_Replay_StopDemoPlayback",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_REPLAY_STOP_DEMO_PLAYBACK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_REPLAY_STOP_DEMO_PLAYBACK"
        }
      }
    },
    "Save_BackupGamePuppyCount": {
      "function": {
        "analysis": {
          "en": {
            "address": 4354448,
            "rva": 160144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4356400,
            "rva": 162096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4356400,
            "rva": 162096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint8_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A0 ?? ?? ?? ?? A2 ?? ?? ?? ?? C3 90 90 90 90 90",
          "match_offset": 0
        },
        "docs": "Copies the active Save_GameSlot+2 puppy_count_backup byte into the backup_puppy_count global and returns it.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 318,
          "symbol_index": 318,
          "accessor": "DTTR_PCDOGS_F_Save_BackupGamePuppyCount",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_BACKUP_GAME_PUPPY_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_BACKUP_GAME_PUPPY_COUNT"
        }
      }
    },
    "Save_CheckContinueSlotLanguage": {
      "function": {
        "analysis": {
          "eu": {
            "address": 4386784,
            "rva": 192480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 413,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4386752,
            "rva": 192448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 413,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "66 83 3D ?? ?? ?? ?? 00 74 0C 66 C7 05 ?? ?? ?? ?? 00 00 32 C0 C3 E8 ?? ?? ?? ?? 0F BE 0D ?? ?? ?? ?? 49 83 F9 03 77 EB FF 24 8D ?? ?? ?? ?? 85 C0 75 E0 B0 01 C3",
          "match_offset": 0
        },
        "docs": "Continue/load gate: returns TRUE when the persisted language (Settings_GetLanguage) belongs to the boot-selected language group (group 1 accepts 0; group 2 accepts 5..7; group 3 accepts 8; group 4 accepts 1..4). A one-shot override word forces FALSE once and self-clears.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 329,
          "symbol_index": 329,
          "accessor": "DTTR_PCDOGS_F_Save_CheckContinueSlotLanguage",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_CHECK_CONTINUE_SLOT_LANGUAGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_CHECK_CONTINUE_SLOT_LANGUAGE"
        }
      }
    },
    "Save_ClearGameBonusProgressData": {
      "function": {
        "analysis": {
          "en": {
            "address": 4355888,
            "rva": 161584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeGameState"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4357872,
            "rva": 163568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeGameState"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4357872,
            "rva": 163568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeGameState"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A3 ?? ?? ?? ?? A3 ?? ?? ?? ?? C3",
          "match_offset": -17
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 326,
          "symbol_index": 326,
          "accessor": "DTTR_PCDOGS_F_Save_ClearGameBonusProgressData",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_CLEAR_GAME_BONUS_PROGRESS_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_CLEAR_GAME_BONUS_PROGRESS_DATA"
        }
      }
    },
    "Save_GameBonusProgress_SavedWorld0CompletionBits": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831860,
            "rva": 637556,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840760,
            "rva": 646456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840744,
            "rva": 646440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameBonusProgress"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 564,
          "symbol_index": 564,
          "accessor": "DTTR_PCDOGS_D_Save_GameBonusProgress_SavedWorld0CompletionBits",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_BONUS_PROGRESS_SAVED_WORLD0_COMPLETION_BITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_BONUS_PROGRESS_SAVED_WORLD0_COMPLETION_BITS"
        }
      }
    },
    "Save_GameBonusProgress_SavedWorld1CompletionBits": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831864,
            "rva": 637560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840764,
            "rva": 646460,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840748,
            "rva": 646444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameBonusProgress"
            },
            "instr_offset": 27,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 565,
          "symbol_index": 565,
          "accessor": "DTTR_PCDOGS_D_Save_GameBonusProgress_SavedWorld1CompletionBits",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_BONUS_PROGRESS_SAVED_WORLD1_COMPLETION_BITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_BONUS_PROGRESS_SAVED_WORLD1_COMPLETION_BITS"
        }
      }
    },
    "Save_GameBonusProgress_SavedWorld2CompletionBits": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831868,
            "rva": 637564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840768,
            "rva": 646464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840752,
            "rva": 646448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameBonusProgress"
            },
            "instr_offset": 39,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 566,
          "symbol_index": 566,
          "accessor": "DTTR_PCDOGS_D_Save_GameBonusProgress_SavedWorld2CompletionBits",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_BONUS_PROGRESS_SAVED_WORLD2_COMPLETION_BITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_BONUS_PROGRESS_SAVED_WORLD2_COMPLETION_BITS"
        }
      }
    },
    "Save_GameBonusProgress_SavedWorld3CompletionBits": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831872,
            "rva": 637568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840772,
            "rva": 646468,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840756,
            "rva": 646452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameBonusProgress"
            },
            "instr_offset": 45,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 567,
          "symbol_index": 567,
          "accessor": "DTTR_PCDOGS_D_Save_GameBonusProgress_SavedWorld3CompletionBits",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_BONUS_PROGRESS_SAVED_WORLD3_COMPLETION_BITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_BONUS_PROGRESS_SAVED_WORLD3_COMPLETION_BITS"
        }
      }
    },
    "Save_GameBonusProgress_SavedWorld4CompletionBits": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831876,
            "rva": 637572,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840776,
            "rva": 646472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840760,
            "rva": 646456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameBonusProgress"
            },
            "instr_offset": 50,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 568,
          "symbol_index": 568,
          "accessor": "DTTR_PCDOGS_D_Save_GameBonusProgress_SavedWorld4CompletionBits",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_BONUS_PROGRESS_SAVED_WORLD4_COMPLETION_BITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_BONUS_PROGRESS_SAVED_WORLD4_COMPLETION_BITS"
        }
      }
    },
    "Save_GameBonusProgress_World1CompletionBits": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830184,
            "rva": 23635880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841448,
            "rva": 23647144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840872,
            "rva": 23646568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameBonusProgress"
            },
            "instr_offset": 5,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 944,
          "symbol_index": 944,
          "accessor": "DTTR_PCDOGS_D_Save_GameBonusProgress_World1CompletionBits",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_BONUS_PROGRESS_WORLD1_COMPLETION_BITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_BONUS_PROGRESS_WORLD1_COMPLETION_BITS"
        }
      }
    },
    "Save_GameBonusProgress_World2CompletionBits": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830188,
            "rva": 23635884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841452,
            "rva": 23647148,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840876,
            "rva": 23646572,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameBonusProgress"
            },
            "instr_offset": 11,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 945,
          "symbol_index": 945,
          "accessor": "DTTR_PCDOGS_D_Save_GameBonusProgress_World2CompletionBits",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_BONUS_PROGRESS_WORLD2_COMPLETION_BITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_BONUS_PROGRESS_WORLD2_COMPLETION_BITS"
        }
      }
    },
    "Save_GameBonusProgress_World3CompletionBits": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830192,
            "rva": 23635888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841456,
            "rva": 23647152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840880,
            "rva": 23646576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameBonusProgress"
            },
            "instr_offset": 22,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 946,
          "symbol_index": 946,
          "accessor": "DTTR_PCDOGS_D_Save_GameBonusProgress_World3CompletionBits",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_BONUS_PROGRESS_WORLD3_COMPLETION_BITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_BONUS_PROGRESS_WORLD3_COMPLETION_BITS"
        }
      }
    },
    "Save_GameBonusProgress_World4CompletionBits": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830208,
            "rva": 23635904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841472,
            "rva": 23647168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840896,
            "rva": 23646592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameBonusProgress"
            },
            "instr_offset": 33,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 949,
          "symbol_index": 949,
          "accessor": "DTTR_PCDOGS_D_Save_GameBonusProgress_World4CompletionBits",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_BONUS_PROGRESS_WORLD4_COMPLETION_BITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_BONUS_PROGRESS_WORLD4_COMPLETION_BITS"
        }
      }
    },
    "Save_GameData": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "version_marker",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "pad_02[2]",
            "offset": 2,
            "doc": null
          },
          {
            "type": "Save_VolumeSettings",
            "name": "volume_settings",
            "offset": 4,
            "doc": "Persisted sfx/music volumes read by Save_GetPackedVolumes and Save_GetMusicVolume."
          },
          {
            "type": "Config_GameSettings",
            "name": "game_settings",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "rumble_suppress_flag",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Save_GameData"
        }
      }
    },
    "Save_GameLevelCompletion_BestTime": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831802,
            "rva": 637498,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 131,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840698,
            "rva": 646394,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 131,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840682,
            "rva": 646378,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 131,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameLevelCompletion"
            },
            "instr_offset": 131,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint16_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_SaveGameLevelCompletion",
          "instr_offset": 131,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Active Save_GameSlot best time/value for the TOB bonus level, written from menu_items by Save_SaveGameLevelCompletion.",
        "sdk": {
          "id": 557,
          "symbol_index": 557,
          "accessor": "DTTR_PCDOGS_D_Save_GameLevelCompletion_BestTime",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_LEVEL_COMPLETION_BEST_TIME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_LEVEL_COMPLETION_BEST_TIME"
        }
      }
    },
    "Save_GameLevelCompletion_CollectiblesData": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831736,
            "rva": 637432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 171,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840632,
            "rva": 646328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 171,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840616,
            "rva": 646312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 171,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameLevelCompletion"
            },
            "instr_offset": 171,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Save_GameSlot",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_SaveGameLevelCompletion",
          "instr_offset": 171,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Active save progress payload copied into save_game_buffer by Save_SaveGameToSlot.",
        "sdk": {
          "id": 552,
          "symbol_index": 552,
          "accessor": "DTTR_PCDOGS_D_Save_GameLevelCompletion_CollectiblesData",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_LEVEL_COMPLETION_COLLECTIBLES_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_LEVEL_COMPLETION_COLLECTIBLES_DATA"
        }
      }
    },
    "Save_GameLevelCompletion_CurrentLevelCompletionBits": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831902,
            "rva": 637598,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 269,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840806,
            "rva": 646502,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 269,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840790,
            "rva": 646486,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 269,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameLevelCompletion"
            },
            "instr_offset": 269,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 581,
          "symbol_index": 581,
          "accessor": "DTTR_PCDOGS_D_Save_GameLevelCompletion_CurrentLevelCompletionBits",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_LEVEL_COMPLETION_CURRENT_LEVEL_COMPLETION_BITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_LEVEL_COMPLETION_CURRENT_LEVEL_COMPLETION_BITS"
        }
      }
    },
    "Save_GameLevelCompletion_DalmatianBonusLevelIds": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525740,
            "rva": 331436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 333,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533932,
            "rva": 339628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 333,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533932,
            "rva": 339628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 333,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameLevelCompletion"
            },
            "instr_offset": 333,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 210,
          "symbol_index": 210,
          "accessor": "DTTR_PCDOGS_D_Save_GameLevelCompletion_DalmatianBonusLevelIds",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_LEVEL_COMPLETION_DALMATIAN_BONUS_LEVEL_IDS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_LEVEL_COMPLETION_DALMATIAN_BONUS_LEVEL_IDS"
        }
      }
    },
    "Save_GameLevelCompletion_HighestWorld": {
      "data": {
        "analysis": {
          "en": {
            "address": 4830976,
            "rva": 636672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 188,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839360,
            "rva": 645056,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 188,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839344,
            "rva": 645040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 188,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameLevelCompletion"
            },
            "instr_offset": 188,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 516,
          "symbol_index": 516,
          "accessor": "DTTR_PCDOGS_D_Save_GameLevelCompletion_HighestWorld",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_LEVEL_COMPLETION_HIGHEST_WORLD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_LEVEL_COMPLETION_HIGHEST_WORLD"
        }
      }
    },
    "Save_GameLevelCompletion_MenuItems": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830056,
            "rva": 23635752,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 123,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841320,
            "rva": 23647016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 123,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840744,
            "rva": 23646440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 123,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SaveGameLevelCompletion"
            },
            "instr_offset": 123,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 927,
          "symbol_index": 927,
          "accessor": "DTTR_PCDOGS_D_Save_GameLevelCompletion_MenuItems",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_GAME_LEVEL_COMPLETION_MENU_ITEMS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_GAME_LEVEL_COMPLETION_MENU_ITEMS"
        }
      }
    },
    "Save_GameSlot": {
      "type": {
        "members": [
          {
            "type": "char",
            "name": "max_world_reached",
            "offset": 0,
            "doc": "Highest world/progress index used by Level_CalculateCompletionPercent as the base completion contribution."
          },
          {
            "type": "uint8_t",
            "name": "is_valid",
            "offset": 1,
            "doc": "Per-slot valid flag set to 1 by Save_SaveGameToSlot after copying the progress block."
          },
          {
            "type": "uint8_t",
            "name": "save_game_puppy_count_backup",
            "offset": 2,
            "doc": "Backed-up puppy/life count copied from backup_puppy_count by Save_BackupGamePuppyCount."
          },
          {
            "type": "uint8_t",
            "name": "save_game_init_flag",
            "offset": 3,
            "doc": "Initialization/progress flag set to 4 by Save_InitializeGameState."
          },
          {
            "type": "uint8_t",
            "name": "save_game_complete_flag",
            "offset": 4,
            "doc": "Game-complete flag written by Save_SetGameComplete."
          },
          {
            "type": "uint8_t",
            "name": "slot_padding[3]",
            "offset": 5,
            "doc": "Reserved alignment bytes before the per-level progress arrays."
          },
          {
            "type": "uint8_t",
            "name": "level_completion_flags[16]",
            "offset": 8,
            "doc": "Per-level puppy/bone completion bitfields updated by Save_SaveGameLevelCompletion."
          },
          {
            "type": "uint8_t",
            "name": "level_bonus_item_flags[16]",
            "offset": 24,
            "doc": "Per-level dalmatian/bonus bitfields updated by Save_SaveGameLevelCompletion."
          },
          {
            "type": "uint8_t",
            "name": "level_best_scores[16]",
            "offset": 40,
            "doc": "Per-level best completion scores; Level_CalculateCompletionPercent treats 100 as full level score."
          },
          {
            "type": "uint16_t",
            "name": "bonus_level_data[5]",
            "offset": 56,
            "doc": "Packed bonus-level parameters read by Level_InitializeBonusData."
          },
          {
            "type": "uint16_t",
            "name": "save_game_level_best_time",
            "offset": 66,
            "doc": "Best time/value for the TOB bonus level, written from menu_items by Save_SaveGameLevelCompletion."
          },
          {
            "type": "uint8_t",
            "name": "bonus_name_entry_buffer[24]",
            "offset": 68,
            "doc": "Name-entry/bonus scratch data copied as part of the save slot payload."
          }
        ],
        "size": 92,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Per-slot progress payload, used by save/load UI and completion calculations.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Save_GameSlot"
        }
      }
    },
    "Save_GetGameHighestWorld": {
      "function": {
        "analysis": {
          "en": {
            "address": 4355824,
            "rva": 161520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuTransition"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4357808,
            "rva": 163504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4357808,
            "rva": 163504,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_InitializeSaveState"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0F BE 05 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90 57 B9 17 00 00 00 33 C0 BF ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 324,
          "symbol_index": 324,
          "accessor": "DTTR_PCDOGS_F_Save_GetGameHighestWorld",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_GET_GAME_HIGHEST_WORLD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_GET_GAME_HIGHEST_WORLD"
        }
      }
    },
    "Save_GetMusicVolume": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353264,
            "rva": 158960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355200,
            "rva": 160896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355200,
            "rva": 160896,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessMusicFade"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 312,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "33 C0 66 A1 ?? ??",
          "match_offset": 0
        },
        "docs": "Reads the music volume from the volume-settings globals.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 301,
          "symbol_index": 301,
          "accessor": "DTTR_PCDOGS_F_Save_GetMusicVolume",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_GET_MUSIC_VOLUME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_GET_MUSIC_VOLUME"
        }
      }
    },
    "Save_GetPackedVolumes": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353232,
            "rva": 158928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_VolumeSettings"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 391,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355168,
            "rva": 160864,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_VolumeSettings"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 391,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355168,
            "rva": 160864,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_VolumeSettings"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 671,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 768,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 391,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Save_VolumeSettings"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 25 FF FF 00",
          "match_offset": 0
        },
        "docs": "Returns the packed volume settings as sfx_volume | (music_volume << 16), FP12 units.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 299,
          "symbol_index": 299,
          "accessor": "DTTR_PCDOGS_F_Save_GetPackedVolumes",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_GET_PACKED_VOLUMES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_GET_PACKED_VOLUMES"
        }
      }
    },
    "Save_InitGameOperation": {
      "function": {
        "analysis": {
          "en": {
            "address": 4443344,
            "rva": 249040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4448592,
            "rva": 254288,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4448560,
            "rva": 254256,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 586,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "operation",
              "type": "uint8_t"
            },
            {
              "name": "buffer",
              "type": "void*"
            },
            {
              "name": "size",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 53 8B 5C",
          "match_offset": 0
        },
        "docs": "Initializes, resets, or frees the global save-game operation state for the requested operation code. Operation 0x0b frees the verify-buffer local allocation; other operations allocate or reuse it, store the active buffer and size globals, and leave only verify-buffer/allocation return metadata.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 509,
          "symbol_index": 509,
          "accessor": "DTTR_PCDOGS_F_Save_InitGameOperation",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_INIT_GAME_OPERATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_INIT_GAME_OPERATION"
        }
      }
    },
    "Save_InitializeGameState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4355840,
            "rva": 161536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_InitializeGameState_InitFlag"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_ClearGameBonusProgressData"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 148,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4357824,
            "rva": 163520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_InitializeGameState_InitFlag"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_ClearGameBonusProgressData"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 734,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4357824,
            "rva": 163520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_InitializeGameState_InitFlag"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_ClearGameBonusProgressData"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 734,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Save_InitializeGameState_InitFlag"
            },
            "instr_offset": 22,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "57 B9 17 00 00 00 33 C0 BF ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 325,
          "symbol_index": 325,
          "accessor": "DTTR_PCDOGS_F_Save_InitializeGameState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_INITIALIZE_GAME_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_INITIALIZE_GAME_STATE"
        }
      }
    },
    "Save_InitializeGameState_InitFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831739,
            "rva": 637435,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeGameState"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840635,
            "rva": 646331,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeGameState"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840619,
            "rva": 646315,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeGameState"
                },
                "instr_offset": 22,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_InitializeGameState"
            },
            "instr_offset": 22,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_InitializeGameState",
          "instr_offset": 22,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Active Save_GameSlot+3 initialization flag set to 4 by Save_InitializeGameState.",
        "sdk": {
          "id": 554,
          "symbol_index": 554,
          "accessor": "DTTR_PCDOGS_D_Save_InitializeGameState_InitFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_INITIALIZE_GAME_STATE_INIT_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_INITIALIZE_GAME_STATE_INIT_FLAG"
        }
      }
    },
    "Save_InitializeNewGame": {
      "function": {
        "analysis": {
          "en": {
            "address": 4355568,
            "rva": 161264,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameCurrentLevel"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetSfxVolume"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetRumbleSuppressFlag"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4357552,
            "rva": 163248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameCurrentLevel"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetSfxVolume"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetLanguage"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetRumbleSuppressFlag"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4357552,
            "rva": 163248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Game_SetSoundEnabled"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetGameCurrentLevel"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SetSfxVolume"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetLanguage"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_SetRumbleSuppressFlag"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "68 00 10 00 00 C6 05 ?? ?? ?? ?? 01 E8 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 322,
          "symbol_index": 322,
          "accessor": "DTTR_PCDOGS_F_Save_InitializeNewGame",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_INITIALIZE_NEW_GAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_INITIALIZE_NEW_GAME"
        }
      }
    },
    "Save_IsGameComplete": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353440,
            "rva": 159136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 793,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_SetCompletionFlags"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355392,
            "rva": 161088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 793,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_SetCompletionFlags"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355392,
            "rva": 161088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ProcessSoundQueue"
                },
                "instr_offset": 793,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_SetCompletionFlags"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0F BE 05 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90 8B 44 24 04 BA ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 310,
          "symbol_index": 310,
          "accessor": "DTTR_PCDOGS_F_Save_IsGameComplete",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_IS_GAME_COMPLETE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_IS_GAME_COMPLETE"
        }
      }
    },
    "Save_LoadGameState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4355648,
            "rva": 161344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FileBuffer"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FileGameSettings"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FileGameState"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FilePlayerLives"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4357632,
            "rva": 163328,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FileBuffer"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FileGameSettings"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FileGameState"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FilePlayerLives"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 287,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 319,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4357632,
            "rva": 163328,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FileBuffer"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FileGameSettings"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FileGameState"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_LoadGameState_FilePlayerLives"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 280,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 287,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 319,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "operation_step",
              "type": "int32_t",
              "docs": "Zero starts the async save-file read; nonzero finalizes the completed read and restores or initializes state."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Save_LoadGameState_FileBuffer"
            },
            "instr_offset": 13,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_LoadGameState_FileGameState"
            },
            "instr_offset": 112,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_LoadGameState_FileGameSettings"
            },
            "instr_offset": 118,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_LoadGameState_FilePlayerLives"
            },
            "instr_offset": 107,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 85 C0 75 ?? 68 DC 01 00 00 68 ??",
          "match_offset": 0
        },
        "docs": "Starts or finalizes loading the save file into save_file_buffer. Returns 0 while the async file op is in progress or invalid, 1 when the save header is empty/incompatible and new-game state is used, and 2 after restoring game_state, game_settings, and player_lives from the file header.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 323,
          "symbol_index": 323,
          "accessor": "DTTR_PCDOGS_F_Save_LoadGameState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_LOAD_GAME_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_LOAD_GAME_STATE"
        }
      }
    },
    "Save_LoadGameState_FileBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831112,
            "rva": 636808,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839752,
            "rva": 645448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839736,
            "rva": 645432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_LoadGameState"
            },
            "instr_offset": 13,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Save_GameData",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_LoadGameState",
          "instr_offset": 13,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Save-file header followed by save-slot payloads; passed to Save_InitGameOperation with total size 0x1dc.",
        "sdk": {
          "id": 524,
          "symbol_index": 524,
          "accessor": "DTTR_PCDOGS_D_Save_LoadGameState_FileBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_LOAD_GAME_STATE_FILE_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_LOAD_GAME_STATE_FILE_BUFFER"
        }
      }
    },
    "Save_LoadGameState_FileGameSettings": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831120,
            "rva": 636816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839760,
            "rva": 645456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839744,
            "rva": 645440,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 118,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_LoadGameState"
            },
            "instr_offset": 118,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_LoadGameState",
          "instr_offset": 118,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Save-file header game_settings dword restored to game_settings by Save_LoadGameState.",
        "sdk": {
          "id": 526,
          "symbol_index": 526,
          "accessor": "DTTR_PCDOGS_D_Save_LoadGameState_FileGameSettings",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_LOAD_GAME_STATE_FILE_GAME_SETTINGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_LOAD_GAME_STATE_FILE_GAME_SETTINGS"
        }
      }
    },
    "Save_LoadGameState_FileGameState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831116,
            "rva": 636812,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839756,
            "rva": 645452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839740,
            "rva": 645436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 112,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_LoadGameState"
            },
            "instr_offset": 112,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_LoadGameState",
          "instr_offset": 112,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Save-file header game_state dword restored to game_state by Save_LoadGameState.",
        "sdk": {
          "id": 525,
          "symbol_index": 525,
          "accessor": "DTTR_PCDOGS_D_Save_LoadGameState_FileGameState",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_LOAD_GAME_STATE_FILE_GAME_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_LOAD_GAME_STATE_FILE_GAME_STATE"
        }
      }
    },
    "Save_LoadGameState_FilePlayerLives": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831124,
            "rva": 636820,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839764,
            "rva": 645460,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839748,
            "rva": 645444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_LoadGameState"
            },
            "instr_offset": 107,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_LoadGameState",
          "instr_offset": 107,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Save-file header player-lives dword restored to player_lives by Save_LoadGameState.",
        "sdk": {
          "id": 527,
          "symbol_index": 527,
          "accessor": "DTTR_PCDOGS_D_Save_LoadGameState_FilePlayerLives",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_LOAD_GAME_STATE_FILE_PLAYER_LIVES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_LOAD_GAME_STATE_FILE_PLAYER_LIVES"
        }
      }
    },
    "Save_OperationStatus": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "status_code",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "success",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "requested_operation",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "completed_operation",
            "offset": 3,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Save_OperationStatus"
        }
      }
    },
    "Save_ProcessGameOperation": {
      "function": {
        "analysis": {
          "en": {
            "address": 4442832,
            "rva": 248528,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_Buffer"
                },
                "instr_offset": 93,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_Size"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_State"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_VerifyBuffer"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_ReadGameFile"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_ReadGameFile"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_WriteGameFile"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4447984,
            "rva": 253680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_Buffer"
                },
                "instr_offset": 93,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_Size"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_State"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_VerifyBuffer"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 577,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 538,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_SeekAndGetPosition"
                },
                "instr_offset": 441,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 571,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4447952,
            "rva": 253648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_Buffer"
                },
                "instr_offset": 93,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_Size"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_State"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ProcessGameOperation_VerifyBuffer"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 577,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 538,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_SeekAndGetPosition"
                },
                "instr_offset": 441,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 571,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_LoadGameState"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "status_out",
              "type": "uint32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Save_ProcessGameOperation_State"
            },
            "instr_offset": 61,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_ProcessGameOperation_Buffer"
            },
            "instr_offset": 93,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_ProcessGameOperation_Size"
            },
            "instr_offset": 41,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_ProcessGameOperation_VerifyBuffer"
            },
            "instr_offset": 46,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0F BE 05 ?? ?? ?? ?? 53 32 DB 83 E8 ??",
          "match_offset": 0
        },
        "docs": "Polls the active save-game operation state. Operation 8 reads savegame.dat, operation 9 writes it, and operation 12 verifies by reading and comparing buffers; writes the packed operation/status word to statusOut and returns whether the underlying file action succeeded.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 506,
          "symbol_index": 506,
          "accessor": "DTTR_PCDOGS_F_Save_ProcessGameOperation",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_PROCESS_GAME_OPERATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_PROCESS_GAME_OPERATION"
        }
      }
    },
    "Save_ProcessGameOperation_Buffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4834332,
            "rva": 640028,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 93,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4843228,
            "rva": 648924,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 93,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4843212,
            "rva": 648908,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 93,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_ProcessGameOperation"
            },
            "instr_offset": 93,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_ProcessGameOperation",
          "instr_offset": 93,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Async save-operation buffer pointer for the static save-file and save-slot record span.",
        "sdk": {
          "id": 672,
          "symbol_index": 672,
          "accessor": "DTTR_PCDOGS_D_Save_ProcessGameOperation_Buffer",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_PROCESS_GAME_OPERATION_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_PROCESS_GAME_OPERATION_BUFFER"
        }
      }
    },
    "Save_ProcessGameOperation_Size": {
      "data": {
        "analysis": {
          "en": {
            "address": 4834336,
            "rva": 640032,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4843232,
            "rva": 648928,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4843216,
            "rva": 648912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_ProcessGameOperation"
            },
            "instr_offset": 41,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_ProcessGameOperation",
          "instr_offset": 41,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Byte count passed to save read and write/verify helpers by Save_ProcessGameOperation.",
        "sdk": {
          "id": 673,
          "symbol_index": 673,
          "accessor": "DTTR_PCDOGS_D_Save_ProcessGameOperation_Size",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_PROCESS_GAME_OPERATION_SIZE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_PROCESS_GAME_OPERATION_SIZE"
        }
      }
    },
    "Save_ProcessGameOperation_State": {
      "data": {
        "analysis": {
          "en": {
            "address": 4834328,
            "rva": 640024,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4843224,
            "rva": 648920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4843208,
            "rva": 648904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 61,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_ProcessGameOperation"
            },
            "instr_offset": 61,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_ProcessGameOperation",
          "instr_offset": 61,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Packed active save I/O operation/status word initialized by Save_InitGameOperation and polled by Save_ProcessGameOperation; byte 0 carries the result/status, byte 1 the success flag, byte 2 the requested operation, and byte 3 the file operation code.",
        "sdk": {
          "id": 671,
          "symbol_index": 671,
          "accessor": "DTTR_PCDOGS_D_Save_ProcessGameOperation_State",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_PROCESS_GAME_OPERATION_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_PROCESS_GAME_OPERATION_STATE"
        }
      }
    },
    "Save_ProcessGameOperation_VerifyBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4834340,
            "rva": 640036,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4843236,
            "rva": 648932,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4843220,
            "rva": 648916,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 46,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_ProcessGameOperation"
            },
            "instr_offset": 46,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_ProcessGameOperation",
          "instr_offset": 46,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Comparison buffer used by Save_ProcessGameOperation's operation 12 verify path.",
        "sdk": {
          "id": 674,
          "symbol_index": 674,
          "accessor": "DTTR_PCDOGS_D_Save_ProcessGameOperation_VerifyBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_PROCESS_GAME_OPERATION_VERIFY_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_PROCESS_GAME_OPERATION_VERIFY_BUFFER"
        }
      }
    },
    "Save_ReadGameFile": {
      "function": {
        "analysis": {
          "en": {
            "address": 4443168,
            "rva": 248864,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ReadGameFile_Dat"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_SeekAndGetPosition"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 67,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 238,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ReadGameFile_Dat"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_ReadGameFile_Dat"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "buffer",
              "type": "void*"
            },
            {
              "name": "size",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Save_ReadGameFile_Dat"
            },
            "instr_offset": 6,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "14 56 57 6A 01 50 E8 ??",
          "match_offset": -34
        },
        "docs": "Opens savegame.dat in rb mode, reads exactly size bytes into buffer, then verifies the file length equals size before returning TRUE.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 507,
          "symbol_index": 507,
          "accessor": "DTTR_PCDOGS_F_Save_ReadGameFile",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_READ_GAME_FILE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_READ_GAME_FILE"
        }
      }
    },
    "Save_ReadGameFile_Dat": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526612,
            "rva": 332308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ReadGameFile"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ReadGameFile"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ReadGameFile"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_ReadGameFile"
            },
            "instr_offset": 6,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "char",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_ReadGameFile",
          "instr_offset": 6,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First byte/base of the \"savegame.dat\" path literal shared by Save_ReadGameFile and Save_WriteGameFile.",
        "sdk": {
          "id": 263,
          "symbol_index": 263,
          "accessor": "DTTR_PCDOGS_D_Save_ReadGameFile_Dat",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_READ_GAME_FILE_DAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_READ_GAME_FILE_DAT"
        }
      }
    },
    "Save_SaveGameBonusProgress": {
      "function": {
        "analysis": {
          "en": {
            "address": 4354384,
            "rva": 160080,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld0CompletionBits"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld1CompletionBits"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld2CompletionBits"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld3CompletionBits"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld4CompletionBits"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World1CompletionBits"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World2CompletionBits"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World3CompletionBits"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World4CompletionBits"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 833,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 150,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4356336,
            "rva": 162032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld0CompletionBits"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld1CompletionBits"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld2CompletionBits"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld3CompletionBits"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld4CompletionBits"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World1CompletionBits"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World2CompletionBits"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World3CompletionBits"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World4CompletionBits"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 833,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 150,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4356336,
            "rva": 162032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld0CompletionBits"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld1CompletionBits"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld2CompletionBits"
                },
                "instr_offset": 39,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld3CompletionBits"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_SavedWorld4CompletionBits"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World1CompletionBits"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World2CompletionBits"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World3CompletionBits"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameBonusProgress_World4CompletionBits"
                },
                "instr_offset": 33,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 833,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 150,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Save_GameBonusProgress_SavedWorld0CompletionBits"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameBonusProgress_SavedWorld1CompletionBits"
            },
            "instr_offset": 27,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameBonusProgress_SavedWorld2CompletionBits"
            },
            "instr_offset": 39,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameBonusProgress_SavedWorld3CompletionBits"
            },
            "instr_offset": 45,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameBonusProgress_SavedWorld4CompletionBits"
            },
            "instr_offset": 50,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameBonusProgress_World1CompletionBits"
            },
            "instr_offset": 5,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameBonusProgress_World2CompletionBits"
            },
            "instr_offset": 11,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameBonusProgress_World3CompletionBits"
            },
            "instr_offset": 22,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameBonusProgress_World4CompletionBits"
            },
            "instr_offset": 33,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A3 ?? ?? ?? ?? 89 0D ?? ?? ?? ?? C3",
          "match_offset": -45
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 317,
          "symbol_index": 317,
          "accessor": "DTTR_PCDOGS_F_Save_SaveGameBonusProgress",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_SAVE_GAME_BONUS_PROGRESS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_SAVE_GAME_BONUS_PROGRESS"
        }
      }
    },
    "Save_SaveGameLevelCompletion": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353936,
            "rva": 159632,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_BestTime"
                },
                "instr_offset": 131,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_CollectiblesData"
                },
                "instr_offset": 171,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_CurrentLevelCompletionBits"
                },
                "instr_offset": 269,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_DalmatianBonusLevelIds"
                },
                "instr_offset": 333,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_HighestWorld"
                },
                "instr_offset": 188,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_MenuItems"
                },
                "instr_offset": 123,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_BackupGamePuppyCount"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 150,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1257,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 369,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355888,
            "rva": 161584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_BestTime"
                },
                "instr_offset": 131,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_CollectiblesData"
                },
                "instr_offset": 171,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_CurrentLevelCompletionBits"
                },
                "instr_offset": 269,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_DalmatianBonusLevelIds"
                },
                "instr_offset": 333,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_HighestWorld"
                },
                "instr_offset": 188,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_MenuItems"
                },
                "instr_offset": 123,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_BackupGamePuppyCount"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 150,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1257,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355888,
            "rva": 161584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_BestTime"
                },
                "instr_offset": 131,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_CollectiblesData"
                },
                "instr_offset": 171,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_CurrentLevelCompletionBits"
                },
                "instr_offset": 269,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_DalmatianBonusLevelIds"
                },
                "instr_offset": 333,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_HighestWorld"
                },
                "instr_offset": 188,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Save_GameLevelCompletion_MenuItems"
                },
                "instr_offset": 123,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetArrayIndex"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_BackupGamePuppyCount"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameBonusProgress"
                },
                "instr_offset": 150,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1127,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 1257,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SaveGameToSlot"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "include_current_puppy",
              "type": "char"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Save_GameLevelCompletion_DalmatianBonusLevelIds"
            },
            "instr_offset": 333,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameLevelCompletion_HighestWorld"
            },
            "instr_offset": 188,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameLevelCompletion_CollectiblesData"
            },
            "instr_offset": 171,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameLevelCompletion_BestTime"
            },
            "instr_offset": 131,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameLevelCompletion_CurrentLevelCompletionBits"
            },
            "instr_offset": 269,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Save_GameLevelCompletion_MenuItems"
            },
            "instr_offset": 123,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0F BF 05 ?? ?? ?? ?? 53 56 50 E8 ??",
          "match_offset": 0
        },
        "docs": "Commit the current level's completion, puppy, bone, and bonus-item progress into the save-state globals. A zero includeCurrentPuppy value stores one less than the current level puppy count; non-zero stores the full count.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 316,
          "symbol_index": 316,
          "accessor": "DTTR_PCDOGS_F_Save_SaveGameLevelCompletion",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_SAVE_GAME_LEVEL_COMPLETION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_SAVE_GAME_LEVEL_COMPLETION"
        }
      }
    },
    "Save_SaveGameToSlot": {
      "function": {
        "analysis": {
          "en": {
            "address": 4364512,
            "rva": 170208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 657,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4367664,
            "rva": 173360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 657,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4367664,
            "rva": 173360,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Save_InitGameOperation"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 197,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 657,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_HandleSaveGameLogic"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "slot_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "F3 A5 6A ??",
          "match_offset": -86
        },
        "docs": "Copies the active save-state and collectible values into one save slot, marks it valid, then starts save operation 9 over the 0x1dc file span.",
        "hook": {
          "kind": "rel32",
          "patch_size": 11,
          "entry_patch_size": 11
        },
        "sdk": {
          "id": 354,
          "symbol_index": 354,
          "accessor": "DTTR_PCDOGS_F_Save_SaveGameToSlot",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_SAVE_GAME_TO_SLOT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_SAVE_GAME_TO_SLOT"
        }
      }
    },
    "Save_SetGameBackupPuppyCount": {
      "function": {
        "analysis": {
          "en": {
            "address": 4354464,
            "rva": 160160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_CollectPowerup"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4356416,
            "rva": 162112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_CollectPowerup"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4356416,
            "rva": 162112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_CollectPowerup"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_RespawnAfterDeath"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "puppy_count",
              "type": "uint8_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 0F BF 0D ?? ?? ?? ?? A0 ?? ?? ?? ??",
          "match_offset": 0
        },
        "docs": "Stores puppyCount in the active Save_GameSlot+2 puppy_count_backup byte and returns the stored value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 319,
          "symbol_index": 319,
          "accessor": "DTTR_PCDOGS_F_Save_SetGameBackupPuppyCount",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_SET_GAME_BACKUP_PUPPY_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_SET_GAME_BACKUP_PUPPY_COUNT"
        }
      }
    },
    "Save_SetGameComplete": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353424,
            "rva": 159120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_SetGameComplete_Flag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355376,
            "rva": 161072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_SetGameComplete_Flag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355376,
            "rva": 161072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_SetGameComplete_Flag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_CheckPauseInput"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "complete_flag",
              "type": "char"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Save_SetGameComplete_Flag"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 0F BE 05 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90 8B 44 24 04 BA ?? ?? ?? ?? 8D 0C 85 04 00 00 00 2B D1 8B 02 C3",
          "match_offset": 0
        },
        "docs": "Stores the game-complete flag in the save-state globals and returns the stored value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 309,
          "symbol_index": 309,
          "accessor": "DTTR_PCDOGS_F_Save_SetGameComplete",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_SET_GAME_COMPLETE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_SET_GAME_COMPLETE"
        }
      }
    },
    "Save_SetGameComplete_Flag": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831740,
            "rva": 637436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SetGameComplete"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840636,
            "rva": 646332,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SetGameComplete"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840620,
            "rva": 646316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_SetGameComplete"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_SetGameComplete"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_SetGameComplete",
          "instr_offset": 4,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Active Save_GameSlot+4 game-complete flag written by Save_SetGameComplete.",
        "sdk": {
          "id": 555,
          "symbol_index": 555,
          "accessor": "DTTR_PCDOGS_D_Save_SetGameComplete_Flag",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_SET_GAME_COMPLETE_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_SET_GAME_COMPLETE_FLAG"
        }
      }
    },
    "Save_SetGameCurrentLevel": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353280,
            "rva": 158976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355216,
            "rva": 160912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355216,
            "rva": 160912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "level_index",
              "type": "int16_t",
              "docs": "Level_State index to store in save state."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "66 8B 44 24 04 66 A3 ?? ?? ?? ?? C3 90 90 90 90 E8",
          "match_offset": 0
        },
        "docs": "Store the current level index in the game save-state globals.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 302,
          "symbol_index": 302,
          "accessor": "DTTR_PCDOGS_F_Save_SetGameCurrentLevel",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_SET_GAME_CURRENT_LEVEL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_SET_GAME_CURRENT_LEVEL"
        }
      }
    },
    "Save_SetSfxVolume": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353248,
            "rva": 158944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355184,
            "rva": 160880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355184,
            "rva": 160880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "slot_index",
              "type": "int16_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "66 8B 44 24 04 66 A3 ?? ?? ?? ?? C3 90 90 90 90 33",
          "match_offset": 0
        },
        "docs": "Stores the sfx volume in the volume-settings globals and returns the stored value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 300,
          "symbol_index": 300,
          "accessor": "DTTR_PCDOGS_F_Save_SetSfxVolume",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_SET_SFX_VOLUME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_SET_SFX_VOLUME"
        }
      }
    },
    "Save_VolumeSettings": {
      "data": {
        "analysis": {
          "en": {
            "address": 4830984,
            "rva": 636680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839624,
            "rva": 645320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839608,
            "rva": 645304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_GetPackedVolumes"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_GetPackedVolumes"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Save_VolumeSettings",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Save_GetPackedVolumes",
          "instr_offset": 0,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "unknown",
        "docs": "Persisted sfx/music volume pair read by Save_GetPackedVolumes and Save_GetMusicVolume and written by Save_SetSfxVolume.",
        "sdk": {
          "id": 519,
          "symbol_index": 519,
          "accessor": "DTTR_PCDOGS_D_Save_VolumeSettings",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_VOLUME_SETTINGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_VOLUME_SETTINGS"
        }
      },
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "sfx_volume",
            "offset": 0,
            "doc": "Sound-effect volume in FP12 units."
          },
          {
            "type": "int16_t",
            "name": "music_volume",
            "offset": 2,
            "doc": "Music volume in FP12 units."
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Persisted audio volume pair returned packed (sfx | music << 16) by Save_GetPackedVolumes.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Save_VolumeSettings"
        }
      }
    },
    "Save_WriteGameFile": {
      "function": {
        "analysis": {
          "en": {
            "address": 4443280,
            "rva": 248976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_WriteGameFile_ModeWriteBinary"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Close"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_Open"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteElements"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_ProcessGameOperation"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_WriteGameFile_ModeWriteBinary"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Save_WriteGameFile_ModeWriteBinary"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "buffer",
              "type": "void const*"
            },
            {
              "name": "size",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Save_WriteGameFile_ModeWriteBinary"
            },
            "instr_offset": 1,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "08 56 6A 01 50 51 E8 ??",
          "match_offset": -32
        },
        "docs": "Opens savegame.dat in wb mode, writes one size-byte record from buffer, closes the file, and returns TRUE if the file was opened.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 508,
          "symbol_index": 508,
          "accessor": "DTTR_PCDOGS_F_Save_WriteGameFile",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SAVE_WRITE_GAME_FILE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SAVE_WRITE_GAME_FILE"
        }
      }
    },
    "Save_WriteGameFile_ModeWriteBinary": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526628,
            "rva": 332324,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_WriteGameFile"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_WriteGameFile"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Save_WriteGameFile"
                },
                "instr_offset": 1,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Save_WriteGameFile"
            },
            "instr_offset": 1,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 264,
          "symbol_index": 264,
          "accessor": "DTTR_PCDOGS_D_Save_WriteGameFile_ModeWriteBinary",
          "sdk_id": "DTTR_PCDOGS_DATA_SAVE_WRITE_GAME_FILE_MODE_WRITE_BINARY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SAVE_WRITE_GAME_FILE_MODE_WRITE_BINARY"
        }
      }
    },
    "Scene_FinalizeNodeRender": {
      "function": {
        "analysis": {
          "en": {
            "address": 4340800,
            "rva": 146496,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Scene_FinalizeNodeRender_VertexNormalAccumY"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 691,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSpritePolygons"
                },
                "instr_offset": 750,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 731,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3656,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4342736,
            "rva": 148432,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Scene_FinalizeNodeRender_VertexNormalAccumY"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 691,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSpritePolygons"
                },
                "instr_offset": 750,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 731,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3656,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4342736,
            "rva": 148432,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Scene_FinalizeNodeRender_VertexNormalAccumY"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 691,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSpritePolygons"
                },
                "instr_offset": 750,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mesh_CalculateVertexNormals"
                },
                "instr_offset": 731,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 3656,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Scene_FinalizeNodeRender_VertexNormalAccumY"
            },
            "instr_offset": 774,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 56 57 A8 80 0F 84 ??",
          "match_offset": -11
        },
        "docs": "Finalizes a rendered scene node, using node render/material fields and invoking Graphics_RenderSpritePolygons(node, transformedVerts, projectedVerts).",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 281,
          "symbol_index": 281,
          "accessor": "DTTR_PCDOGS_F_Scene_FinalizeNodeRender",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCENE_FINALIZE_NODE_RENDER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCENE_FINALIZE_NODE_RENDER"
        }
      }
    },
    "Scene_FinalizeNodeRender_VertexNormalAccumY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802634,
            "rva": 608330,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810986,
            "rva": 616682,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810970,
            "rva": 616666,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Scene_FinalizeNodeRender"
            },
            "instr_offset": 774,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 490,
          "symbol_index": 490,
          "accessor": "DTTR_PCDOGS_D_Scene_FinalizeNodeRender_VertexNormalAccumY",
          "sdk_id": "DTTR_PCDOGS_DATA_SCENE_FINALIZE_NODE_RENDER_VERTEX_NORMAL_ACCUM_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCENE_FINALIZE_NODE_RENDER_VERTEX_NORMAL_ACCUM_Y"
        }
      }
    },
    "Scene_Header": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "node_count",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "root_node_ptr",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Scene_Node**",
            "name": "scene_node_list_ptr",
            "offset": 8,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Scene_Header"
        }
      }
    },
    "Scene_InitNodeState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4198544,
            "rva": 4240,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResetState"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 708,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4198944,
            "rva": 4640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResetState"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 708,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4198944,
            "rva": 4640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResetState"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 708,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 65 74 ?? 48 0F 84 ??",
          "match_offset": -18
        },
        "docs": "Initializes/reset per-node render/traversal state for a scene node before traversal or transition use.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 33,
          "symbol_index": 33,
          "accessor": "DTTR_PCDOGS_F_Scene_InitNodeState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCENE_INIT_NODE_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCENE_INIT_NODE_STATE"
        }
      }
    },
    "Scene_LocalTransform": {
      "type": {
        "members": [
          {
            "type": "Math_Vec3I16",
            "name": "pos",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "rot",
            "offset": 6,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding_0d[1]",
            "offset": 13,
            "doc": null
          }
        ],
        "size": 14,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Scene_LocalTransform"
        }
      }
    },
    "Scene_Node": {
      "type": {
        "members": [
          {
            "type": "Scene_Node*",
            "name": "next_in_resource_list",
            "offset": 0,
            "doc": "Resource-side list link used to chain Scene_Node records during load and fixup."
          },
          {
            "type": "int32_t",
            "name": "node_list_skip_count",
            "offset": 4,
            "doc": "Scene_RenderNodeTree treats this as a node-list cursor skip count when traversal flags hide a subtree."
          },
          {
            "type": "Scene_Node*",
            "name": "transform_parent_node",
            "offset": 8,
            "doc": "Parent transform node used by the renderer for traversal flags and parent world matrix/position fields."
          },
          {
            "type": "Math_Matrix3x3I16",
            "name": "local_rot_matrix",
            "offset": 12,
            "doc": "Local rotation matrix read by Scene_UpdateNodeAnimation/node-transform update paths."
          },
          {
            "type": "int16_t",
            "name": "local_rot_reserved",
            "offset": 30,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "local_pos",
            "offset": 32,
            "doc": null
          },
          {
            "type": "Math_Matrix3x3I16",
            "name": "world_rot_matrix",
            "offset": 44,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "world_rot_reserved",
            "offset": 62,
            "doc": "Reserved word after world_rot_matrix. Scene_UpdateNodeAnimation writes the surrounding matrix fields, but this word is reserved for internal use."
          },
          {
            "type": "Math_Vec3I32",
            "name": "world_pos",
            "offset": 64,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "world_delta_pos",
            "offset": 76,
            "doc": "Per-update world position delta computed by Scene_UpdateNodeAnimation."
          },
          {
            "type": "int8_t",
            "name": "position_anim_channel_index_or_minus_one",
            "offset": 88,
            "doc": "Signed animation channel index read by Scene_UpdateNodeAnimation; negative values skip sampling."
          },
          {
            "type": "int8_t",
            "name": "rotation_anim_channel_index_or_minus_one",
            "offset": 89,
            "doc": "Signed animation channel index read by Scene_UpdateNodeAnimation; negative values skip sampling."
          },
          {
            "type": "int8_t",
            "name": "visibility_anim_channel_index_or_minus_one",
            "offset": 90,
            "doc": "Signed animation channel index read by visibility/render traversal; negative values skip sampling."
          },
          {
            "type": "int8_t",
            "name": "scale_anim_channel_index_or_minus_one",
            "offset": 91,
            "doc": "Signed animation channel index read by Scene_UpdateNodeAnimation; negative values skip sampling."
          },
          {
            "type": "uint16_t",
            "name": "anim_update_sentinel",
            "offset": 92,
            "doc": "Scene_UpdateNodeAnimation skips animation update when this word is 0xFFFF."
          },
          {
            "type": "uint16_t",
            "name": "padding_5e",
            "offset": 94,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "cached_anim_tick",
            "offset": 96,
            "doc": "Compared/stored against actor animation tick by Scene_UpdateNodeAnimation."
          },
          {
            "type": "uint8_t",
            "name": "node_type",
            "offset": 100,
            "doc": "Node type byte read by Scene_UpdateNodeAnimation."
          },
          {
            "type": "uint8_t",
            "name": "traversal_flags",
            "offset": 101,
            "doc": "Traversal/visibility flags byte read by Scene_TraverseNodeTree."
          },
          {
            "type": "int8_t",
            "name": "render_entry_index_for_type_6",
            "offset": 102,
            "doc": "Type-specific signed render and model-entry index used by node_type 6 render paths."
          },
          {
            "type": "int8_t",
            "name": "type_specific_secondary_render_or_sound_index",
            "offset": 103,
            "doc": "Type-specific secondary byte. For node_type 0x0b sound nodes this is a level-local sound index passed to Audio_PlayLevelSoundIndexAtPosition."
          },
          {
            "type": "int32_t",
            "name": "render_param_1",
            "offset": 104,
            "doc": "Type-specific render/collision parameter. For collision-style nodes, the low/high words can act as vertex and polygon counts."
          },
          {
            "type": "void*",
            "name": "variant_payload_ptr",
            "offset": 108,
            "doc": "Type-specific pointer: model/mesh sprite table, type-8 simple-node payload, or collision/scene polygon array; rebased by PKG_FixUpResource*Node paths."
          },
          {
            "type": "Mesh_RuntimeVertex*",
            "name": "runtime_vertices",
            "offset": 112,
            "doc": "Runtime mesh vertex array for this node; the root node repurposes this slot as the collision list head."
          },
          {
            "type": "Mesh_CmdList*",
            "name": "mesh_cmd_list",
            "offset": 116,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "visibility_flags[4]",
            "offset": 120,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "shadow_list_link",
            "offset": 124,
            "doc": "Next-node link in the shadow render list."
          },
          {
            "type": "void*",
            "name": "model_relocated_ptr_80",
            "offset": 128,
            "doc": "Model-node pointer rebased by PKG_FixUpResourceObjectNodeType1MeshActorLike ."
          },
          {
            "type": "void*",
            "name": "model_relocated_ptr_84",
            "offset": 132,
            "doc": "Model-node pointer rebased by PKG_FixUpResourceObjectNodeType1MeshActorLike ."
          },
          {
            "type": "uint32_t",
            "name": "model_runtime_flags",
            "offset": 136,
            "doc": "Flags read by traversal/render/fixup paths; PKG_FixUpResourceObjectNodeType1MeshActorLike tests bit 1 , and collision polygon tests use transformed coordinates when bits 0x22 are set."
          },
          {
            "type": "uint32_t",
            "name": "variant_transform_tail",
            "offset": 140,
            "doc": "Reserved tail dword before trail_effects_ptr."
          },
          {
            "type": "Trail_BoneEffect*",
            "name": "trail_effects_ptr",
            "offset": 144,
            "doc": null
          },
          {
            "type": "Submesh_Entry*",
            "name": "submesh_entry_table",
            "offset": 148,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding_98[4]",
            "offset": 152,
            "doc": "Reserved tail gap used by render finalize and bone paths."
          },
          {
            "type": "int32_t",
            "name": "sort_keys[2]",
            "offset": 156,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "child_node_list_ptr",
            "offset": 164,
            "doc": null
          },
          {
            "type": "Actor_State*",
            "name": "deferred_actor_list",
            "offset": 168,
            "doc": "Head of the deferred actor render list chained through this node."
          },
          {
            "type": "void*",
            "name": "model_animation_data_ptr",
            "offset": 172,
            "doc": "Model animation-data pointer rebased by PKG_FixUpResourceObjectNodeType1MeshActorLike and read by Scene_TraverseNodeTree for visibility animation data."
          },
          {
            "type": "void*",
            "name": "offset_fixup_list_ptr",
            "offset": 176,
            "doc": "Rebased model-node fixup list pointer walked by PKG_FixUpResourceObjectNodeType1MeshActorLike."
          },
          {
            "type": "int32_t",
            "name": "child_rot_x",
            "offset": 180,
            "doc": "Reserved variant-tail field."
          },
          {
            "type": "uint16_t",
            "name": "anim_step_q6",
            "offset": 184,
            "doc": "Per-node animation step in Q6 fixed-point units."
          },
          {
            "type": "uint16_t",
            "name": "mesh_node_count",
            "offset": 186,
            "doc": "Count for mesh_node_table read by PKG_FixUpResourceObjectNodeType1MeshActorLike/PKG_FixUpResourceObjectNodeType3ComplexActorLike."
          },
          {
            "type": "Mesh_RenderNodeEntry*",
            "name": "mesh_node_table",
            "offset": 188,
            "doc": "Mesh render-node entry table; count is read from mesh_node_count and entries are fixed by PKG_FixUpResourceObjectNodeType3ComplexActorLike before Scene_RenderSubMesh indexes them."
          },
          {
            "type": "int32_t",
            "name": "child_scale_x",
            "offset": 192,
            "doc": "Reserved variant-tail field."
          },
          {
            "type": "uint8_t",
            "name": "reserved_c4",
            "offset": 196,
            "doc": "Reserved byte before model-node type-1 dispatch metadata."
          },
          {
            "type": "int8_t",
            "name": "type_1_dispatch_index",
            "offset": 197,
            "doc": "Signed dispatch index used by Scene_TraverseNodeTree and tested by PKG_FixUpResourceObjectNodeType1MeshActorLike before rebasing LOD/config data."
          },
          {
            "type": "int8_t",
            "name": "type_1_attach_point_index",
            "offset": 198,
            "doc": "For Scene_UpdateNodeAnimation node type 1, indexes actor attach_point_table entries."
          },
          {
            "type": "int8_t",
            "name": "type_1_bone_channel_index",
            "offset": 199,
            "doc": "For Scene_UpdateNodeAnimation node type 1, indexes the type-1 bone/animation channel table."
          },
          {
            "type": "int32_t",
            "name": "child_scale_z",
            "offset": 200,
            "doc": "Reserved variant-tail field."
          },
          {
            "type": "int32_t",
            "name": "render_offset_x",
            "offset": 204,
            "doc": "Model render position added to world_pos_x by Scene_TraverseNodeTree to produce render-space position."
          },
          {
            "type": "int32_t",
            "name": "render_offset_y",
            "offset": 208,
            "doc": "Model render position added to world_pos_y by Scene_TraverseNodeTree to produce render-space position."
          },
          {
            "type": "int32_t",
            "name": "render_offset_z",
            "offset": 212,
            "doc": "Model render position added to world_pos_z by Scene_TraverseNodeTree to produce render-space position."
          },
          {
            "type": "Scene_Node*",
            "name": "lod_config_ptr",
            "offset": 216,
            "doc": "Reserved variant-tail pointer."
          }
        ],
        "size": 220,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Scene graph node. The root node repurposes +0x70 as the collision list head, +0x78 as the active node array, and +0xB4 as the background color.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Scene_Node"
        }
      }
    },
    "Scene_NodeEntry": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "material_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "type_and_flags",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "data_offset",
            "offset": 8,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "child_table_ptr",
            "offset": 12,
            "doc": null
          }
        ],
        "size": 16,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Scene_NodeEntry"
        }
      }
    },
    "Scene_NodePayload": {
      "type": {
        "members": [
          {
            "type": "Scene_Node*",
            "name": "parent_node_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "child_list_head",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "sibling_link",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Scene_LocalTransform",
            "name": "transform",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "node_type",
            "offset": 26,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding_1b[1]",
            "offset": 27,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "padding",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding_1e[2]",
            "offset": 30,
            "doc": null
          }
        ],
        "size": 32,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Compact scene-node payload/resource-record prefix shared by older Group, Model, and Object shapes.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Scene_NodePayload"
        }
      }
    },
    "Scene_NodeType": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "type",
            "offset": 0,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Scene_NodeType"
        }
      }
    },
    "Scene_RenderBillboard": {
      "function": {
        "analysis": {
          "en": {
            "address": 4200336,
            "rva": 6032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1258,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4200736,
            "rva": 6432,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1258,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4200736,
            "rva": 6432,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderMeshNode"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1258,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8D 50 6C 8D 48 2C 52 50 89 0D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 35,
          "symbol_index": 35,
          "accessor": "DTTR_PCDOGS_F_Scene_RenderBillboard",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCENE_RENDER_BILLBOARD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCENE_RENDER_BILLBOARD"
        }
      }
    },
    "Scene_RenderFrame": {
      "function": {
        "analysis": {
          "en": {
            "address": 4201792,
            "rva": 7488,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Scene_RenderFrame_VertexBatchBuffer"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 1513,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 1523,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_RecomputePitchYawFromEyeTarget"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearShadowList"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 1537,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 1564,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 1390,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 1450,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 402,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrixDirect"
                },
                "instr_offset": 346,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 311,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 1518,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 1489,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1505,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 389,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4202192,
            "rva": 7888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Scene_RenderFrame_VertexBatchBuffer"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 1513,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 1523,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_RecomputePitchYawFromEyeTarget"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearShadowList"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 1537,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 1450,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 402,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrixDirect"
                },
                "instr_offset": 346,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 311,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 1518,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 1489,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1505,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 399,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4202192,
            "rva": 7888,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Scene_RenderFrame_VertexBatchBuffer"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateList"
                },
                "instr_offset": 1513,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_UpdateProjectileList"
                },
                "instr_offset": 1523,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_RecomputePitchYawFromEyeTarget"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearShadowList"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_DrawSortedLists"
                },
                "instr_offset": 1537,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderAllShadows"
                },
                "instr_offset": 1450,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrix"
                },
                "instr_offset": 402,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildRotationMatrixDirect"
                },
                "instr_offset": 346,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 311,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_UpdateLiveActorList"
                },
                "instr_offset": 1518,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderStaticGeometry"
                },
                "instr_offset": 1489,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1505,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 399,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Scene_RenderFrame_VertexBatchBuffer"
            },
            "instr_offset": 1402,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 44 F6 05 ?? ?? ?? ?? 08 0F 85 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 39,
          "symbol_index": 39,
          "accessor": "DTTR_PCDOGS_F_Scene_RenderFrame",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCENE_RENDER_FRAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCENE_RENDER_FRAME"
        }
      },
      "signature": {
        "analysis": {
          "en": {
            "address": 4201792,
            "rva": 7488,
            "image_base": 4194304
          },
          "eu": {
            "address": 4202192,
            "rva": 7888,
            "image_base": 4194304
          },
          "sc": {
            "address": 4202192,
            "rva": 7888,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "55 8B EC 83 EC 44 F6 05 ?? ?? ?? ?? 08 0F 85 ??"
      }
    },
    "Scene_RenderFrame_VertexBatchBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439948,
            "rva": 2245644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6450188,
            "rva": 2255884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6449612,
            "rva": 2255308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1402,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Scene_RenderFrame"
            },
            "instr_offset": 1402,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 743,
          "symbol_index": 743,
          "accessor": "DTTR_PCDOGS_D_Scene_RenderFrame_VertexBatchBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_SCENE_RENDER_FRAME_VERTEX_BATCH_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCENE_RENDER_FRAME_VERTEX_BATCH_BUFFER"
        }
      }
    },
    "Scene_RenderNodeTree": {
      "function": {
        "analysis": {
          "en": {
            "address": 4204960,
            "rva": 10656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CheckKeyframeActive"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ConvertQuatToRotMatrix"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 754,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeVec3Blend"
                },
                "instr_offset": 648,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 3366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 3579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 3527,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 1243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 2525,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesMorphed"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 2109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 3306,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_UpdateJointTracking"
                },
                "instr_offset": 3615,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 2043,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 3240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometry"
                },
                "instr_offset": 2074,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometry"
                },
                "instr_offset": 3271,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 720,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 3656,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 1170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateEffect"
                },
                "instr_offset": 1142,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4205360,
            "rva": 11056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CheckKeyframeActive"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ConvertQuatToRotMatrix"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 754,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeVec3Blend"
                },
                "instr_offset": 648,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 3366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 3579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 3527,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 1243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 2525,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesMorphed"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 2109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 3306,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_UpdateJointTracking"
                },
                "instr_offset": 3615,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 2043,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 3240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 720,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 3656,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 1170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateEffect"
                },
                "instr_offset": 1142,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4205360,
            "rva": 11056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CheckKeyframeActive"
                },
                "instr_offset": 491,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ConvertQuatToRotMatrix"
                },
                "instr_offset": 693,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeQuatBlend"
                },
                "instr_offset": 754,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateKeyframeVec3Blend"
                },
                "instr_offset": 648,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 622,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 3366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 3579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 3527,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 1243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_ProcessExternalRef"
                },
                "instr_offset": 2525,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesMorphed"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 2109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformWeightedVerticesForRender"
                },
                "instr_offset": 3306,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_UpdateJointTracking"
                },
                "instr_offset": 3615,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 2043,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 3240,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_BuildQuaternionFromMatrix"
                },
                "instr_offset": 720,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_FinalizeNodeRender"
                },
                "instr_offset": 3656,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 1170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateEffect"
                },
                "instr_offset": 1142,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 81 EC 90 00 00 00 A1 ??",
          "match_offset": 0
        },
        "docs": "Renders the active scene node tree and runs render and finalizer side effects.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 44,
          "symbol_index": 44,
          "accessor": "DTTR_PCDOGS_F_Scene_RenderNodeTree",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCENE_RENDER_NODE_TREE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCENE_RENDER_NODE_TREE"
        }
      }
    },
    "Scene_RenderStaticGeometry": {
      "function": {
        "analysis": {
          "en": {
            "address": 4203376,
            "rva": 9072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 939,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 972,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 1057,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1489,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4203776,
            "rva": 9472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 939,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 972,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 1057,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1489,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4203776,
            "rva": 9472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 939,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderPolygonBatch"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSceneGeometryWrapper"
                },
                "instr_offset": 972,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderSpriteObjectNode"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 1057,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1489,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 56 57 C7",
          "match_offset": -35
        },
        "docs": "Renders static scene geometry for side effects and returns the native status value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 40,
          "symbol_index": 40,
          "accessor": "DTTR_PCDOGS_F_Scene_RenderStaticGeometry",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCENE_RENDER_STATIC_GEOMETRY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCENE_RENDER_STATIC_GEOMETRY"
        }
      }
    },
    "Scene_RenderSubMesh": {
      "function": {
        "analysis": {
          "en": {
            "address": 4200880,
            "rva": 6576,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 850,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateEffect"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1227,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4201280,
            "rva": 6976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 850,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateEffect"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1227,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4201280,
            "rva": 6976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 850,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateEffect"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1227,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "node",
              "type": "Scene_Node*"
            },
            {
              "name": "span",
              "type": "Submesh_RenderSpan*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 5D 10 83 C0 2C A3 ??",
          "match_offset": -10
        },
        "docs": "Renders one submesh render span of a scene node for the supplied actor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 38,
          "symbol_index": 38,
          "accessor": "DTTR_PCDOGS_F_Scene_RenderSubMesh",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCENE_RENDER_SUB_MESH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCENE_RENDER_SUB_MESH"
        }
      }
    },
    "Scene_ResetState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4272032,
            "rva": 77728,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_Initialize"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_ClearQueue"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 349,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4272512,
            "rva": 78208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_Initialize"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_ClearQueue"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 359,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4272512,
            "rva": 78208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Camera_Initialize"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_InitializeActorSystem"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_ClearQueue"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 359,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8A 0D ?? ?? ?? ?? B8 02 00 00 00 84 C8 0F 85 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 180,
          "symbol_index": 180,
          "accessor": "DTTR_PCDOGS_F_Scene_ResetState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCENE_RESET_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCENE_RESET_STATE"
        }
      }
    },
    "Scene_SubNodePayload": {
      "type": {
        "members": [
          {
            "type": "Scene_Node*",
            "name": "parent_node_ptr",
            "offset": 0,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "child_list_head",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Scene_Node*",
            "name": "sibling_link",
            "offset": 8,
            "doc": null
          },
          {
            "type": "Scene_LocalTransform",
            "name": "transform",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "node_type",
            "offset": 26,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding_1b",
            "offset": 27,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "padding_1c",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "padding_1e[2]",
            "offset": 30,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "extra_data",
            "offset": 32,
            "doc": null
          }
        ],
        "size": 36,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Compact scene sub-node payload/resource-record variant.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Scene_SubNodePayload"
        }
      }
    },
    "Scene_TraverseNodeTree": {
      "function": {
        "analysis": {
          "en": {
            "address": 4198880,
            "rva": 4576,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonCallback"
                },
                "instr_offset": 1025,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Scene_TraverseNodeTree_TypeDispatchTable"
                },
                "instr_offset": 890,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CheckKeyframeActive"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 727,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 955,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 1396,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderBillboard"
                },
                "instr_offset": 1258,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 1118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 1227,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 751,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 1283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 667,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1505,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4199280,
            "rva": 4976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonCallback"
                },
                "instr_offset": 1025,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Scene_TraverseNodeTree_TypeDispatchTable"
                },
                "instr_offset": 890,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CheckKeyframeActive"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 727,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 955,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 1396,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderBillboard"
                },
                "instr_offset": 1258,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 1118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 1227,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 751,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 1283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 667,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1505,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4199280,
            "rva": 4976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Graphics_RenderPolygonCallback"
                },
                "instr_offset": 1025,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Scene_TraverseNodeTree_TypeDispatchTable"
                },
                "instr_offset": 890,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetChainState"
                },
                "instr_offset": 843,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_CheckKeyframeActive"
                },
                "instr_offset": 535,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 436,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 727,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_CheckFrustumCull"
                },
                "instr_offset": 955,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 1078,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 1396,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_InitNodeState"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderBillboard"
                },
                "instr_offset": 1258,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 1118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 1227,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 751,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Scene_UpdateNodeAnimation"
                },
                "instr_offset": 1283,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 667,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 737,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderFrame"
                },
                "instr_offset": 1505,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "Scene_Node*",
          "params": [
            {
              "name": "node",
              "type": "Scene_Node*"
            },
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "traversal_flags",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Scene_TraverseNodeTree_TypeDispatchTable"
            },
            "instr_offset": 890,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Graphics_RenderPolygonCallback"
            },
            "instr_offset": 1025,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "7C ?? 1C 85 F6 0F 84 ??",
          "match_offset": -24
        },
        "docs": "Traverses the scene-node tree for rendering and visibility side effects, dispatching node_type 1..7 through scene_node_type_dispatch_table.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 34,
          "symbol_index": 34,
          "accessor": "DTTR_PCDOGS_F_Scene_TraverseNodeTree",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCENE_TRAVERSE_NODE_TREE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCENE_TRAVERSE_NODE_TREE"
        }
      }
    },
    "Scene_TraverseNodeTree_TypeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4200308,
            "rva": 6004,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 890,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4200708,
            "rva": 6404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 890,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4200708,
            "rva": 6404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 890,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Scene_TraverseNodeTree"
            },
            "instr_offset": 890,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Scene_TraverseNodeTree",
          "instr_offset": 890,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Seven-entry uint32_t jump table used by Scene_TraverseNodeTree to dispatch child scene-node type values 1..7.",
        "sdk": {
          "id": 17,
          "symbol_index": 17,
          "accessor": "DTTR_PCDOGS_D_Scene_TraverseNodeTree_TypeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_SCENE_TRAVERSE_NODE_TREE_TYPE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCENE_TRAVERSE_NODE_TREE_TYPE_DISPATCH_TABLE"
        }
      }
    },
    "Scene_UpdateNodeAnimation": {
      "function": {
        "analysis": {
          "en": {
            "address": 4255200,
            "rva": 60896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ConvertQuatToRotMatrix"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateSpline"
                },
                "instr_offset": 698,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateSpline"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 751,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1283,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4255680,
            "rva": 61376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ConvertQuatToRotMatrix"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateSpline"
                },
                "instr_offset": 698,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateSpline"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 751,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1283,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4255680,
            "rva": 61376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ConvertQuatToRotMatrix"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateSpline"
                },
                "instr_offset": 698,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateSpline"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_InterpolateVec3"
                },
                "instr_offset": 306,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Bone_TransformVerticesWeighted"
                },
                "instr_offset": 614,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 751,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1283,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor/render state providing animation tick, animation data table, behavior flags, and mesh-piece table."
            },
            {
              "name": "parent_node",
              "type": "Scene_Node*",
              "docs": "Parent node transform source; matrix and position are used for world composition."
            },
            {
              "name": "node",
              "type": "Scene_Node*",
              "docs": "Scene node whose local animated channels and world transform outputs are updated."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "81 7E 5C FF FF 0F 84 ??",
          "match_offset": -11
        },
        "docs": "Updates one scene node's animated local channels and composes its world transform from the parent node. It skips nodes with anim_seq_index == -1, samples position, rotation, scale/scalar channels when present, handles type 1/6 weighted vertex animation through Bone_TransformVerticesWeighted, handles type 8 scalar pairs, then writes the node world position, velocity delta, and world rotation matrix from the parent transform.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 115,
          "symbol_index": 115,
          "accessor": "DTTR_PCDOGS_F_Scene_UpdateNodeAnimation",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCENE_UPDATE_NODE_ANIMATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCENE_UPDATE_NODE_ANIMATION"
        }
      }
    },
    "Script_ActorOpcodeDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528520,
            "rva": 334216,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunWithActor"
                },
                "instr_offset": 174,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536748,
            "rva": 342444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunWithActor"
                },
                "instr_offset": 174,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536748,
            "rva": 342444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpRunWithActor"
                },
                "instr_offset": 174,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpRunWithActor"
            },
            "instr_offset": 174,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Script_OpcodeTable",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Script_OpRunWithActor",
          "instr_offset": 174,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Script opcode handler table used by actor-script execution paths including Script_OpRunWithActor. The table is per-opcode semantics still require case-by-case review before naming individual handlers.",
        "sdk": {
          "id": 300,
          "symbol_index": 300,
          "accessor": "DTTR_PCDOGS_D_Script_ActorOpcodeDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_ACTOR_OPCODE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_ACTOR_OPCODE_DISPATCH_TABLE"
        }
      }
    },
    "Script_CommandCallback": {
      "type": {
        "ret": "void",
        "params": [
          {
            "type": "Actor_State*",
            "name": "actor",
            "doc": null
          },
          {
            "type": "uint8_t**",
            "name": "ip",
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "function_type_alias",
        "docs": "Script_OpRunWithActor uses this callback type for opcode handlers in the native script dispatch table.",
        "calling_convention": "cdecl",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Script_CommandCallback"
        }
      }
    },
    "Script_Context": {
      "type": {
        "members": [
          {
            "type": "uint8_t*",
            "name": "script_data",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t*",
            "name": "script_pc",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int32_t*",
            "name": "stack_ptr",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int32_t*",
            "name": "var_base",
            "offset": 12,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "flags",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Script interpreter context for instruction state and game-script execution data.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Script_Context"
        }
      }
    },
    "Script_ExecuteBehaviorScript": {
      "function": {
        "analysis": {
          "en": {
            "address": 4457648,
            "rva": 263344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCountThunk"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2236,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4463200,
            "rva": 268896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCountThunk"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2236,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4463216,
            "rva": 268912,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCountThunk"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Camera_UpdateFollow"
                },
                "instr_offset": 2236,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 85 F6 57 89 35 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 578,
          "symbol_index": 578,
          "accessor": "DTTR_PCDOGS_F_Script_ExecuteBehaviorScript",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_EXECUTE_BEHAVIOR_SCRIPT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_EXECUTE_BEHAVIOR_SCRIPT"
        }
      }
    },
    "Script_GetVariableById": {
      "function": {
        "analysis": {
          "en": {
            "address": 4258176,
            "rva": 63872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4258656,
            "rva": 64352,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4258656,
            "rva": 64352,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 37,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "progress_var_index",
              "type": "uint8_t",
              "docs": "Selector byte position by +9 before resolving the backing script/global progress variable."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "25 ?? ?? ?? ?? 50 51 6A 00 E8 ?? ?? ?? ?? 83",
          "match_offset": -10
        },
        "docs": "Resolves and returns a script variable by id; nothing animation-specific. The selector is stored as a byte by Actor_ProcessMovementBehavior; this wrapper adds 9 and passes that refID to Script_ResolveVariableRef with a null actor, so selectors map to level/global script variables.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 128,
          "symbol_index": 128,
          "accessor": "DTTR_PCDOGS_F_Script_GetVariableById",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_GET_VARIABLE_BY_ID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_GET_VARIABLE_BY_ID"
        }
      }
    },
    "Script_OpAddNavigationCommand": {
      "function": {
        "analysis": {
          "en": {
            "address": 4262592,
            "rva": 68288,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4263072,
            "rva": 68768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4263072,
            "rva": 68768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_AddCommand"
                },
                "instr_offset": 208,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "88 54 24 10 75 ?? 8B ??",
          "match_offset": -19
        },
        "docs": "Parses one navigation opcode from *ip. Opcodes other than 0x67 parse navigation operands and enqueue a command with Nav_AddCommand for the current script actor's entity slot. Opcode 0x67 advances past its six-byte operand payload, updates current_level_data->current_entity_index from g_scriptCurrentActor's slot in current_level_data->entity_array, and returns without calling Nav_AddCommand.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 143,
          "symbol_index": 143,
          "accessor": "DTTR_PCDOGS_F_Script_OpAddNavigationCommand",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_ADD_NAVIGATION_COMMAND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_ADD_NAVIGATION_COMMAND"
        }
      }
    },
    "Script_OpAnimateSpriteMove": {
      "function": {
        "analysis": {
          "en": {
            "address": 4465920,
            "rva": 271616,
            "image_base": 4194304
          },
          "eu": {
            "address": 4473136,
            "rva": 278832,
            "image_base": 4194304
          },
          "sc": {
            "address": 4473072,
            "rva": 278768,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC ?? 53 55 56 57 8B 7C 24 ?? 33 C9 33 DB 8B 2F 83 C5 ?? 8B C5 89 2F",
          "match_offset": 0
        },
        "docs": "Sprite move-tween opcode: reads target/duration/easing bytes and loops by restoring *ip until the computed end tick. The rotation tween is the separate routine at 0x442930.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 595,
          "symbol_index": 595,
          "accessor": "DTTR_PCDOGS_F_Script_OpAnimateSpriteMove",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_ANIMATE_SPRITE_MOVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_ANIMATE_SPRITE_MOVE"
        }
      }
    },
    "Script_OpAnimateTarget": {
      "function": {
        "analysis": {
          "en": {
            "address": 4467504,
            "rva": 273200,
            "image_base": 4194304
          },
          "eu": {
            "address": 4474720,
            "rva": 280416,
            "image_base": 4194304
          },
          "sc": {
            "address": 4474656,
            "rva": 280352,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "14 52 8D 04 50 8B 15 ??",
          "match_offset": -152
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 598,
          "symbol_index": 598,
          "accessor": "DTTR_PCDOGS_F_Script_OpAnimateTarget",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_ANIMATE_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_ANIMATE_TARGET"
        }
      }
    },
    "Script_OpAnimateZoom": {
      "function": {
        "analysis": {
          "en": {
            "address": 4466464,
            "rva": 272160,
            "image_base": 4194304
          },
          "eu": {
            "address": 4473680,
            "rva": 279376,
            "image_base": 4194304
          },
          "sc": {
            "address": 4473616,
            "rva": 279312,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "33 D2 8A 50 FF 8B E9 ??",
          "match_offset": -125
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 596,
          "symbol_index": 596,
          "accessor": "DTTR_PCDOGS_F_Script_OpAnimateZoom",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_ANIMATE_ZOOM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_ANIMATE_ZOOM"
        }
      }
    },
    "Script_OpBranchConditional": {
      "function": {
        "analysis": {
          "en": {
            "address": 4258256,
            "rva": 63952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpBranchConditional_ArithmeticOpTable"
                },
                "instr_offset": 267,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpBranchConditional_ComparisonOpTable"
                },
                "instr_offset": 391,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4258736,
            "rva": 64432,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpBranchConditional_ArithmeticOpTable"
                },
                "instr_offset": 267,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpBranchConditional_ComparisonOpTable"
                },
                "instr_offset": 391,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4258736,
            "rva": 64432,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpBranchConditional_ArithmeticOpTable"
                },
                "instr_offset": 267,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpBranchConditional_ComparisonOpTable"
                },
                "instr_offset": 391,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Script_OpBranchConditional_ArithmeticOpTable"
            },
            "instr_offset": 267,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpBranchConditional_ComparisonOpTable"
            },
            "instr_offset": 391,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0B DA 80 F9 06 0F 84 ??",
          "match_offset": -104
        },
        "docs": "Decodes a conditional branch bytecode record, resolves one or two operands through Script_ResolveVariableRef/random/button-state helpers, applies optional arithmetic, and advances *ip to the branch target when the selected comparison fails.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 700,
          "symbol_index": 700,
          "accessor": "DTTR_PCDOGS_F_Script_OpBranchConditional",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_BRANCH_CONDITIONAL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_BRANCH_CONDITIONAL"
        }
      }
    },
    "Script_OpBranchConditional_ArithmeticOpTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4258756,
            "rva": 64452,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 267,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4259236,
            "rva": 64932,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 267,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4259236,
            "rva": 64932,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 267,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpBranchConditional"
            },
            "instr_offset": 267,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Script_OpBranchConditional",
          "instr_offset": 267,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Four-entry uint32_t jump table used by Script_OpBranchConditional for arithmetic/combine opcodes before comparison.",
        "sdk": {
          "id": 25,
          "symbol_index": 25,
          "accessor": "DTTR_PCDOGS_D_Script_OpBranchConditional_ArithmeticOpTable",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_BRANCH_CONDITIONAL_ARITHMETIC_OP_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_BRANCH_CONDITIONAL_ARITHMETIC_OP_TABLE"
        }
      }
    },
    "Script_OpBranchConditional_ComparisonOpTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4258772,
            "rva": 64468,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 391,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4259252,
            "rva": 64948,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 391,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4259252,
            "rva": 64948,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 391,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpBranchConditional"
            },
            "instr_offset": 391,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Script_OpBranchConditional",
          "instr_offset": 391,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Six-entry uint32_t jump table used by Script_OpBranchConditional for comparison opcodes.",
        "sdk": {
          "id": 26,
          "symbol_index": 26,
          "accessor": "DTTR_PCDOGS_D_Script_OpBranchConditional_ComparisonOpTable",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_BRANCH_CONDITIONAL_COMPARISON_OP_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_BRANCH_CONDITIONAL_COMPARISON_OP_TABLE"
        }
      }
    },
    "Script_OpCallIndirect": {
      "function": {
        "analysis": {
          "en": {
            "address": 4259360,
            "rva": 65056,
            "image_base": 4194304
          },
          "eu": {
            "address": 4259840,
            "rva": 65536,
            "image_base": 4194304
          },
          "sc": {
            "address": 4259840,
            "rva": 65536,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 50 8B 10 42 89 10 8B 44 24 08 8B CA 33 D2 50 8A 51 FF FF 14 95 ?? ?? ?? ??",
          "match_offset": 0
        },
        "docs": "Consumes one script opcode byte and dispatches through the script command table.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 132,
          "symbol_index": 132,
          "accessor": "DTTR_PCDOGS_F_Script_OpCallIndirect",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_CALL_INDIRECT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_CALL_INDIRECT"
        }
      }
    },
    "Script_OpCheckButtonState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4265024,
            "rva": 70720,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4265504,
            "rva": 71200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4265504,
            "rva": 71200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 83 C4 10 83 F8 64 7D ?? 89",
          "match_offset": -106
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 156,
          "symbol_index": 156,
          "accessor": "DTTR_PCDOGS_F_Script_OpCheckButtonState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_CHECK_BUTTON_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_CHECK_BUTTON_STATE"
        }
      }
    },
    "Script_OpCheckCollisionBit": {
      "function": {
        "analysis": {
          "en": {
            "address": 4210512,
            "rva": 16208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4210960,
            "rva": 16656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4210960,
            "rva": 16656,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_UpdateCollisionDetection"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "script_cursor_inout",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 C1 02 89 08 8B 35 ??",
          "match_offset": -19
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 53,
          "symbol_index": 53,
          "accessor": "DTTR_PCDOGS_F_Script_OpCheckCollisionBit",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_CHECK_COLLISION_BIT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_CHECK_COLLISION_BIT"
        }
      }
    },
    "Script_OpCheckTerminator": {
      "function": {
        "analysis": {
          "en": {
            "address": 4257568,
            "rva": 63264,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpCheckTerminator_EntityIndex"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpCheckTerminator_OpcodeTable"
                },
                "instr_offset": 26,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4258048,
            "rva": 63744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpCheckTerminator_EntityIndex"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpCheckTerminator_OpcodeTable"
                },
                "instr_offset": 26,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4258048,
            "rva": 63744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpCheckTerminator_EntityIndex"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpCheckTerminator_OpcodeTable"
                },
                "instr_offset": 26,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Script_OpCheckTerminator_OpcodeTable"
            },
            "instr_offset": 26,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpCheckTerminator_EntityIndex"
            },
            "instr_offset": 278,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 48 83 F8 03 0F 87 ??",
          "match_offset": -15
        },
        "docs": "Handles script terminator opcodes 1..4: clears *ip for hard end cases, skips nested variable-length blocks for opcode 2, and rotates actor script-nesting state bytes for opcodes 3/4.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 124,
          "symbol_index": 124,
          "accessor": "DTTR_PCDOGS_F_Script_OpCheckTerminator",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_CHECK_TERMINATOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_CHECK_TERMINATOR"
        }
      }
    },
    "Script_OpCheckTerminator_EntityIndex": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505604,
            "rva": 2311300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckTerminator"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515844,
            "rva": 2321540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckTerminator"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515268,
            "rva": 2320964,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckTerminator"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpCheckTerminator"
            },
            "instr_offset": 278,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 752,
          "symbol_index": 752,
          "accessor": "DTTR_PCDOGS_D_Script_OpCheckTerminator_EntityIndex",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_CHECK_TERMINATOR_ENTITY_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_CHECK_TERMINATOR_ENTITY_INDEX"
        }
      }
    },
    "Script_OpCheckTerminator_OpcodeTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4257916,
            "rva": 63612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckTerminator"
                },
                "instr_offset": 26,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4258396,
            "rva": 64092,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckTerminator"
                },
                "instr_offset": 26,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4258396,
            "rva": 64092,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpCheckTerminator"
                },
                "instr_offset": 26,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpCheckTerminator"
            },
            "instr_offset": 26,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Script_OpCheckTerminator",
          "instr_offset": 26,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Four-entry uint32_t jump table for Script_OpCheckTerminator opcodes 1 through 4.",
        "sdk": {
          "id": 24,
          "symbol_index": 24,
          "accessor": "DTTR_PCDOGS_D_Script_OpCheckTerminator_OpcodeTable",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_CHECK_TERMINATOR_OPCODE_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_CHECK_TERMINATOR_OPCODE_TABLE"
        }
      }
    },
    "Script_OpClearActorProperty": {
      "function": {
        "analysis": {
          "en": {
            "address": 4261776,
            "rva": 67472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4262256,
            "rva": 67952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4262256,
            "rva": 67952,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 6A FF 8B 08 41 89 08 8B C1 8B 0D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 140,
          "symbol_index": 140,
          "accessor": "DTTR_PCDOGS_F_Script_OpClearActorProperty",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_CLEAR_ACTOR_PROPERTY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_CLEAR_ACTOR_PROPERTY"
        }
      }
    },
    "Script_OpDecrementVariable": {
      "function": {
        "analysis": {
          "en": {
            "address": 4259296,
            "rva": 64992,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4259776,
            "rva": 65472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4259776,
            "rva": 65472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? 8B 4C 24 14 83 C4",
          "match_offset": -30
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 131,
          "symbol_index": 131,
          "accessor": "DTTR_PCDOGS_F_Script_OpDecrementVariable",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_DECREMENT_VARIABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_DECREMENT_VARIABLE"
        }
      }
    },
    "Script_OpEmitSignal": {
      "function": {
        "analysis": {
          "en": {
            "address": 4263072,
            "rva": 68768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4263552,
            "rva": 69248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4263552,
            "rva": 69248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 109,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C2 3C FE 75 ?? C1 E8 ??",
          "match_offset": -75
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 145,
          "symbol_index": 145,
          "accessor": "DTTR_PCDOGS_F_Script_OpEmitSignal",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_EMIT_SIGNAL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_EMIT_SIGNAL"
        }
      }
    },
    "Script_OpEnsureCameraActive": {
      "function": {
        "analysis": {
          "en": {
            "address": 4263872,
            "rva": 69568,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetOrSpawnCameraActor"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4264352,
            "rva": 70048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetOrSpawnCameraActor"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4264352,
            "rva": 70048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 72,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetOrSpawnCameraActor"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "5A 04 51 8B 6A 08 E8 ??",
          "match_offset": -66
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 151,
          "symbol_index": 151,
          "accessor": "DTTR_PCDOGS_F_Script_OpEnsureCameraActive",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_ENSURE_CAMERA_ACTIVE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_ENSURE_CAMERA_ACTIVE"
        }
      }
    },
    "Script_OpJumpConditional": {
      "function": {
        "analysis": {
          "en": {
            "address": 4257968,
            "rva": 63664,
            "image_base": 4194304
          },
          "eu": {
            "address": 4258448,
            "rva": 64144,
            "image_base": 4194304
          },
          "sc": {
            "address": 4258448,
            "rva": 64144,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "script_cursor_inout",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 8B 4C 24 0C 33 D2 8B 01 83 C0 02 89 01 8A 70 ?? 8A 50 ?? 03 D0 40 89 01",
          "match_offset": 0
        },
        "docs": "Reads a 16-bit relative target and selector byte, then restores *script_cursor_inout to the target when the selector differs from the actor entity-slot selector.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 126,
          "symbol_index": 126,
          "accessor": "DTTR_PCDOGS_F_Script_OpJumpConditional",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_JUMP_CONDITIONAL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_JUMP_CONDITIONAL"
        }
      }
    },
    "Script_OpMoveToTarget": {
      "function": {
        "analysis": {
          "en": {
            "address": 4259424,
            "rva": 65120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpMoveToTarget_CurrentActor"
                },
                "instr_offset": 135,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4259904,
            "rva": 65600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpMoveToTarget_CurrentActor"
                },
                "instr_offset": 135,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4259904,
            "rva": 65600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpMoveToTarget_CurrentActor"
                },
                "instr_offset": 135,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 482,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Script_OpMoveToTarget_CurrentActor"
            },
            "instr_offset": 135,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "66 81 FF FF 7F 0F 84 ??",
          "match_offset": -124
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 133,
          "symbol_index": 133,
          "accessor": "DTTR_PCDOGS_F_Script_OpMoveToTarget",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_MOVE_TO_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_MOVE_TO_TARGET"
        }
      }
    },
    "Script_OpMoveToTargetWithCamera": {
      "function": {
        "analysis": {
          "en": {
            "address": 4261072,
            "rva": 66768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetVelocityAndSnap"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 456,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 371,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4261552,
            "rva": 67248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetVelocityAndSnap"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 456,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 371,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4261552,
            "rva": 67248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ResetVelocityAndSnap"
                },
                "instr_offset": 485,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 456,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 350,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 371,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "08 8B 74 24 18 8B 1D ??",
          "match_offset": -100
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 137,
          "symbol_index": 137,
          "accessor": "DTTR_PCDOGS_F_Script_OpMoveToTargetWithCamera",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_MOVE_TO_TARGET_WITH_CAMERA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_MOVE_TO_TARGET_WITH_CAMERA"
        }
      }
    },
    "Script_OpMoveToTarget_CurrentActor": {
      "data": {
        "analysis": {
          "en": {
            "address": 6505600,
            "rva": 2311296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 135,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6515840,
            "rva": 2321536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 135,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6515264,
            "rva": 2320960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpMoveToTarget"
                },
                "instr_offset": 135,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpMoveToTarget"
            },
            "instr_offset": 135,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Actor_State*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Script_OpMoveToTarget",
          "instr_offset": 135,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "engine_managed",
        "docs": "Script-dispatch current actor context written by Script_ExecuteBehaviorScript and read by script command handlers; engine-managed transient state.",
        "sdk": {
          "id": 751,
          "symbol_index": 751,
          "accessor": "DTTR_PCDOGS_D_Script_OpMoveToTarget_CurrentActor",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_MOVE_TO_TARGET_CURRENT_ACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_MOVE_TO_TARGET_CURRENT_ACTOR"
        }
      }
    },
    "Script_OpPathfindToEntity": {
      "function": {
        "analysis": {
          "en": {
            "address": 4261824,
            "rva": 67520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4262304,
            "rva": 68000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4262304,
            "rva": 68000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "3D FF 7F 74 ?? 8B 35 ??",
          "match_offset": -42
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 141,
          "symbol_index": 141,
          "accessor": "DTTR_PCDOGS_F_Script_OpPathfindToEntity",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_PATHFIND_TO_ENTITY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_PATHFIND_TO_ENTITY"
        }
      }
    },
    "Script_OpPauseToggle": {
      "function": {
        "analysis": {
          "en": {
            "address": 4221392,
            "rva": 27088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CollisionListHead"
                },
                "instr_offset": 467,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_AnimationTimerState"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraFOV"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraRotationAngle"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraTransitionCountdown"
                },
                "instr_offset": 379,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraTransitionCounter"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CurrentGameMode"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_FadeCounter"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_LevelTransitionFlag"
                },
                "instr_offset": 372,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_LevelTransitionFlag"
                },
                "instr_offset": 399,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_SavedActorWorldRenderPosX"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_SavedActorWorldRenderPosY"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_SavedActorWorldRenderPosZ"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_ScreenBorderStateFlag"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_State"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_TargetDistance"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_TargetRotationAngle"
                },
                "instr_offset": 419,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_TargetYOffset"
                },
                "instr_offset": 425,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 840,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 462,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 762,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 744,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 285,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 706,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 621,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 457,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_InitializeSystem"
                },
                "instr_offset": 880,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 875,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4221840,
            "rva": 27536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CollisionListHead"
                },
                "instr_offset": 467,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_AnimationTimerState"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraFOV"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraRotationAngle"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraTransitionCountdown"
                },
                "instr_offset": 379,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraTransitionCounter"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CurrentGameMode"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_FadeCounter"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_LevelTransitionFlag"
                },
                "instr_offset": 372,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_LevelTransitionFlag"
                },
                "instr_offset": 399,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_SavedActorWorldRenderPosX"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_SavedActorWorldRenderPosY"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_SavedActorWorldRenderPosZ"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_ScreenBorderStateFlag"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_State"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_TargetDistance"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_TargetRotationAngle"
                },
                "instr_offset": 419,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_TargetYOffset"
                },
                "instr_offset": 425,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 850,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 472,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 754,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 716,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 631,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 467,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_InitializeSystem"
                },
                "instr_offset": 890,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4221840,
            "rva": 27536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Actor_CollisionListHead"
                },
                "instr_offset": 467,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_AnimationTimerState"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraFOV"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraRotationAngle"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraTransitionCountdown"
                },
                "instr_offset": 379,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CameraTransitionCounter"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_CurrentGameMode"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_FadeCounter"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_LevelTransitionFlag"
                },
                "instr_offset": 372,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_LevelTransitionFlag"
                },
                "instr_offset": 399,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_SavedActorWorldRenderPosX"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_SavedActorWorldRenderPosY"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_SavedActorWorldRenderPosZ"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_ScreenBorderStateFlag"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_State"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_TargetDistance"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_TargetRotationAngle"
                },
                "instr_offset": 419,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpPauseToggle_TargetYOffset"
                },
                "instr_offset": 425,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_AddToCollisionList"
                },
                "instr_offset": 850,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ClearReferences"
                },
                "instr_offset": 472,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_ReleaseAttachment"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_SnapToPosition"
                },
                "instr_offset": 754,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 272,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 716,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 631,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetActiveActorFromList"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_Cleanup"
                },
                "instr_offset": 467,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Powerup_InitializeSystem"
                },
                "instr_offset": 890,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_ScreenBorderStateFlag"
            },
            "instr_offset": 102,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_FadeCounter"
            },
            "instr_offset": 141,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_CameraTransitionCountdown"
            },
            "instr_offset": 379,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_LevelTransitionFlag"
            },
            "instr_offset": 372,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_LevelTransitionFlag"
            },
            "instr_offset": 399,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_AnimationTimerState"
            },
            "instr_offset": 247,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Actor_CollisionListHead"
            },
            "instr_offset": 467,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_CameraTransitionCounter"
            },
            "instr_offset": 409,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_CameraRotationAngle"
            },
            "instr_offset": 414,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_TargetRotationAngle"
            },
            "instr_offset": 419,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_TargetYOffset"
            },
            "instr_offset": 425,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_TargetDistance"
            },
            "instr_offset": 431,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_CameraFOV"
            },
            "instr_offset": 451,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_CurrentGameMode"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_State"
            },
            "instr_offset": 27,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_SavedActorWorldRenderPosX"
            },
            "instr_offset": 41,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_SavedActorWorldRenderPosY"
            },
            "instr_offset": 50,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Script_OpPauseToggle_SavedActorWorldRenderPosZ"
            },
            "instr_offset": 59,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 53 33 DB 55",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 75,
          "symbol_index": 75,
          "accessor": "DTTR_PCDOGS_F_Script_OpPauseToggle",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_PAUSE_TOGGLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_PAUSE_TOGGLE"
        }
      }
    },
    "Script_OpPauseToggle_AnimationTimerState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551140,
            "rva": 356836,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 172657510,
            "rva": 168463206,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 172657510,
            "rva": 168463206,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 247,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 247,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 349,
          "symbol_index": 349,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_AnimationTimerState",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_ANIMATION_TIMER_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_ANIMATION_TIMER_STATE"
        }
      }
    },
    "Script_OpPauseToggle_CameraFOV": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830172,
            "rva": 23635868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 210599940,
            "rva": 206405636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 210599940,
            "rva": 206405636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 451,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 451,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 942,
          "symbol_index": 942,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_CameraFOV",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_CAMERA_FOV",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_CAMERA_FOV"
        }
      }
    },
    "Script_OpPauseToggle_CameraRotationAngle": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830156,
            "rva": 23635852,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 180,
            "rva": -4194124,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 180,
            "rva": -4194124,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 414,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 938,
          "symbol_index": 938,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_CameraRotationAngle",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_CAMERA_ROTATION_ANGLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_CAMERA_ROTATION_ANGLE"
        }
      }
    },
    "Script_OpPauseToggle_CameraTransitionCountdown": {
      "data": {
        "analysis": {
          "en": {
            "address": 4546244,
            "rva": 351940,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 379,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1476773377,
            "rva": 1472579073,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 379,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1208337921,
            "rva": 1204143617,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 379,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 379,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 336,
          "symbol_index": 336,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_CameraTransitionCountdown",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_CAMERA_TRANSITION_COUNTDOWN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_CAMERA_TRANSITION_COUNTDOWN"
        }
      }
    },
    "Script_OpPauseToggle_CameraTransitionCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830152,
            "rva": 23635848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2832434181,
            "rva": 2828239877,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2832286725,
            "rva": 2828092421,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 409,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 937,
          "symbol_index": 937,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_CameraTransitionCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_CAMERA_TRANSITION_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_CAMERA_TRANSITION_COUNTER"
        }
      }
    },
    "Script_OpPauseToggle_CurrentGameMode": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831728,
            "rva": 23637424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27842992,
            "rva": 23648688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27842416,
            "rva": 23648112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 957,
          "symbol_index": 957,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_CurrentGameMode",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_CURRENT_GAME_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_CURRENT_GAME_MODE"
        }
      }
    },
    "Script_OpPauseToggle_FadeCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4545844,
            "rva": 351540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2158174404,
            "rva": 2153980100,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1084432580,
            "rva": 1080238276,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 141,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 328,
          "symbol_index": 328,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_FadeCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_FADE_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_FADE_COUNTER"
        }
      }
    },
    "Script_OpPauseToggle_LevelTransitionFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551112,
            "rva": 356808,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 372,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 399,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 227213312,
            "rva": 223019008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 372,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 399,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 227213312,
            "rva": 223019008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 372,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 399,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 372,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 399,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 342,
          "symbol_index": 342,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_LevelTransitionFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_LEVEL_TRANSITION_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_LEVEL_TRANSITION_FLAG"
        }
      }
    },
    "Script_OpPauseToggle_SavedActorWorldRenderPosX": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831776,
            "rva": 23637472,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 9962782,
            "rva": 5768478,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 9962782,
            "rva": 5768478,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 41,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Saved active actor world_render_pos_x used for pause/menu distance checks.",
        "sdk": {
          "id": 967,
          "symbol_index": 967,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_SavedActorWorldRenderPosX",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_SAVED_ACTOR_WORLD_RENDER_POS_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_SAVED_ACTOR_WORLD_RENDER_POS_X"
        }
      }
    },
    "Script_OpPauseToggle_SavedActorWorldRenderPosY": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831780,
            "rva": 23637476,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2832850957,
            "rva": 2828656653,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2832703501,
            "rva": 2828509197,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 50,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 50,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Saved active actor world_render_pos_y used for pause/menu distance checks.",
        "sdk": {
          "id": 968,
          "symbol_index": 968,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_SavedActorWorldRenderPosY",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_SAVED_ACTOR_WORLD_RENDER_POS_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_SAVED_ACTOR_WORLD_RENDER_POS_Y"
        }
      }
    },
    "Script_OpPauseToggle_SavedActorWorldRenderPosZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831784,
            "rva": 23637480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 3655603593,
            "rva": 3651409289,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 3617854857,
            "rva": 3613660553,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 59,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Saved active actor world_render_pos_z used for pause/menu distance checks.",
        "sdk": {
          "id": 969,
          "symbol_index": 969,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_SavedActorWorldRenderPosZ",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_SAVED_ACTOR_WORLD_RENDER_POS_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_SAVED_ACTOR_WORLD_RENDER_POS_Z"
        }
      }
    },
    "Script_OpPauseToggle_ScreenBorderStateFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 4545836,
            "rva": 351532,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 3263893641,
            "rva": 3259699337,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 3263893641,
            "rva": 3259699337,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 102,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 102,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 326,
          "symbol_index": 326,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_ScreenBorderStateFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_SCREEN_BORDER_STATE_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_SCREEN_BORDER_STATE_FLAG"
        }
      }
    },
    "Script_OpPauseToggle_State": {
      "data": {
        "analysis": {
          "en": {
            "address": 27831760,
            "rva": 23637456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2112367733,
            "rva": 2108173429,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2112367733,
            "rva": 2108173429,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 27,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 966,
          "symbol_index": 966,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_State",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_STATE"
        }
      }
    },
    "Script_OpPauseToggle_TargetDistance": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830168,
            "rva": 23635864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 495518120,
            "rva": 491323816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 495518120,
            "rva": 491323816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 431,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 431,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 941,
          "symbol_index": 941,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_TargetDistance",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_TARGET_DISTANCE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_TARGET_DISTANCE"
        }
      }
    },
    "Script_OpPauseToggle_TargetRotationAngle": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830160,
            "rva": 23635856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 419,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 2734794963,
            "rva": 2730600659,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 419,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2734794961,
            "rva": 2730600657,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 419,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 419,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 939,
          "symbol_index": 939,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_TargetRotationAngle",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_TARGET_ROTATION_ANGLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_TARGET_ROTATION_ANGLE"
        }
      }
    },
    "Script_OpPauseToggle_TargetYOffset": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830164,
            "rva": 23635860,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 425,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 495518120,
            "rva": 491323816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 425,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 495518120,
            "rva": 491323816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 425,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpPauseToggle"
            },
            "instr_offset": 425,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 940,
          "symbol_index": 940,
          "accessor": "DTTR_PCDOGS_D_Script_OpPauseToggle_TargetYOffset",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_PAUSE_TOGGLE_TARGET_Y_OFFSET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_PAUSE_TOGGLE_TARGET_Y_OFFSET"
        }
      }
    },
    "Script_OpPlaySoundBlockOrWait": {
      "function": {
        "analysis": {
          "en": {
            "address": 4264800,
            "rva": 70496,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_GetStateIndex"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4265280,
            "rva": 70976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_GetStateIndex"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4265280,
            "rva": 70976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_GetStateIndex"
                },
                "instr_offset": 84,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_FindSoundByType"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "script_cursor_inout",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "03 D8 40 89 06 8B 3D ??",
          "match_offset": -27
        },
        "docs": "Length-prefixed script sound block opcode. It reads the block length and sound operand from *script_cursor_inout, can hold the cursor while playback is active, and uses Audio_PlaySoundDefinition3D with a current-level sound definition.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 155,
          "symbol_index": 155,
          "accessor": "DTTR_PCDOGS_F_Script_OpPlaySoundBlockOrWait",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_PLAY_SOUND_BLOCK_OR_WAIT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_PLAY_SOUND_BLOCK_OR_WAIT"
        }
      }
    },
    "Script_OpPlaySoundIndex": {
      "function": {
        "analysis": {
          "en": {
            "address": 4263248,
            "rva": 68944,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_GetStateIndex"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4263728,
            "rva": 69424,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_GetStateIndex"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4263728,
            "rva": 69424,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_GetStateIndex"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "script_cursor_inout",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 83 C4 08 85 C0 7C ?? 8B 15 ?? ?? ?? ?? 8B",
          "match_offset": -70
        },
        "docs": "Script sound opcode that reads one byte from *script_cursor_inout, advances the cursor by one byte, and plays it as a level-local sound index.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 146,
          "symbol_index": 146,
          "accessor": "DTTR_PCDOGS_F_Script_OpPlaySoundIndex",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_PLAY_SOUND_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_PLAY_SOUND_INDEX"
        }
      }
    },
    "Script_OpPollSignal": {
      "function": {
        "analysis": {
          "en": {
            "address": 4210752,
            "rva": 16448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4211200,
            "rva": 16896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4211200,
            "rva": 16896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "script_cursor_inout",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "66 89 54 24 10 50 E8 ??",
          "match_offset": -90
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 54,
          "symbol_index": 54,
          "accessor": "DTTR_PCDOGS_F_Script_OpPollSignal",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_POLL_SIGNAL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_POLL_SIGNAL"
        }
      }
    },
    "Script_OpProcessSpriteRotation": {
      "function": {
        "analysis": {
          "en": {
            "address": 4466992,
            "rva": 272688,
            "image_base": 4194304
          },
          "eu": {
            "address": 4474208,
            "rva": 279904,
            "image_base": 4194304
          },
          "sc": {
            "address": 4474144,
            "rva": 279840,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC ?? 53 56 57 8B 7D ?? 33 C9 33 DB 8B 37 83 C6 ?? 8B C6 89 37",
          "match_offset": 0
        },
        "docs": "Reads sprite rotation animation target/duration/easing bytes, updates actor rotation fields, and loops until the end tick.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 597,
          "symbol_index": 597,
          "accessor": "DTTR_PCDOGS_F_Script_OpProcessSpriteRotation",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_PROCESS_SPRITE_ROTATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_PROCESS_SPRITE_ROTATION"
        }
      }
    },
    "Script_OpRemoveActor": {
      "function": {
        "analysis": {
          "en": {
            "address": 4263488,
            "rva": 69184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4263968,
            "rva": 69664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4263968,
            "rva": 69664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_DestroyActor"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "66 85 C0 7E ?? 8B 15 ?? ?? ?? ?? 68",
          "match_offset": -41
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 148,
          "symbol_index": 148,
          "accessor": "DTTR_PCDOGS_F_Script_OpRemoveActor",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_REMOVE_ACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_REMOVE_ACTOR"
        }
      }
    },
    "Script_OpRotateActor": {
      "function": {
        "analysis": {
          "en": {
            "address": 4260928,
            "rva": 66624,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CalculateRotation"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4261408,
            "rva": 67104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CalculateRotation"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4261408,
            "rva": 67104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CalculateRotation"
                },
                "instr_offset": 122,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 C0 02 89 06 8B E9 ??",
          "match_offset": -29
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 136,
          "symbol_index": 136,
          "accessor": "DTTR_PCDOGS_F_Script_OpRotateActor",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_ROTATE_ACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_ROTATE_ACTOR"
        }
      }
    },
    "Script_OpRunToTarget": {
      "function": {
        "analysis": {
          "en": {
            "address": 4260432,
            "rva": 66128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 431,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 385,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4260912,
            "rva": 66608,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 431,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 385,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4260912,
            "rva": 66608,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 431,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 385,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "03 C8 83 C0 02 8B E9 ??",
          "match_offset": -30
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 135,
          "symbol_index": 135,
          "accessor": "DTTR_PCDOGS_F_Script_OpRunToTarget",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_RUN_TO_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_RUN_TO_TARGET"
        }
      }
    },
    "Script_OpRunWithActor": {
      "function": {
        "analysis": {
          "en": {
            "address": 4263600,
            "rva": 69296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_ActorOpcodeDispatchTable"
                },
                "instr_offset": 174,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetOrSpawnCameraActor"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4264080,
            "rva": 69776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_ActorOpcodeDispatchTable"
                },
                "instr_offset": 174,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetOrSpawnCameraActor"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4264080,
            "rva": 69776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_ActorOpcodeDispatchTable"
                },
                "instr_offset": 174,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_GetOrSpawnCameraActor"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_UpdateVisibilityAndSpawn"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Script_ActorOpcodeDispatchTable"
            },
            "instr_offset": 174,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 C0 02 89 06 8B 1D ??",
          "match_offset": -33
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 149,
          "symbol_index": 149,
          "accessor": "DTTR_PCDOGS_F_Script_OpRunWithActor",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_RUN_WITH_ACTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_RUN_WITH_ACTOR"
        }
      }
    },
    "Script_OpSetActorProperty": {
      "function": {
        "analysis": {
          "en": {
            "address": 4261680,
            "rva": 67376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4262160,
            "rva": 67856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4262160,
            "rva": 67856,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "08 0B CA 8B C1 8B 0D ??",
          "match_offset": -65
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 139,
          "symbol_index": 139,
          "accessor": "DTTR_PCDOGS_F_Script_OpSetActorProperty",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_SET_ACTOR_PROPERTY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_SET_ACTOR_PROPERTY"
        }
      }
    },
    "Script_OpSetEntityIndex": {
      "function": {
        "analysis": {
          "en": {
            "address": 4257936,
            "rva": 63632,
            "image_base": 4194304
          },
          "eu": {
            "address": 4258416,
            "rva": 64112,
            "image_base": 4194304
          },
          "sc": {
            "address": 4258416,
            "rva": 64112,
            "image_base": 4194304
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "script_cursor_inout",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 08 8B 08 41 89 08 8B C1 8B 4C 24 04 8A 40 ?? 88 81 ?? ?? ?? ?? C3",
          "match_offset": 0
        },
        "docs": "Consumes one script byte from *script_cursor_inout and stores it as the actor entity-slot selector.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 125,
          "symbol_index": 125,
          "accessor": "DTTR_PCDOGS_F_Script_OpSetEntityIndex",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_SET_ENTITY_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_SET_ENTITY_INDEX"
        }
      }
    },
    "Script_OpSetPlayerState": {
      "function": {
        "analysis": {
          "en": {
            "address": 4213408,
            "rva": 19104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Player_InitializeState"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4213856,
            "rva": 19552,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Player_InitializeState"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4213856,
            "rva": 19552,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Player_InitializeState"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "script_cursor_inout",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 88 4F 0C 7D ?? E8 ??",
          "match_offset": -90
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 63,
          "symbol_index": 63,
          "accessor": "DTTR_PCDOGS_F_Script_OpSetPlayerState",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_SET_PLAYER_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_SET_PLAYER_STATE"
        }
      }
    },
    "Script_OpSetSpriteProperty": {
      "function": {
        "analysis": {
          "en": {
            "address": 4467824,
            "rva": 273520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4475040,
            "rva": 280736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4474976,
            "rva": 280672,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0C 49 8D 04 48 8B 0D ??",
          "match_offset": -71
        },
        "docs": "Script opcode that mutates PKG_SpriteEntry fields.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 599,
          "symbol_index": 599,
          "accessor": "DTTR_PCDOGS_F_Script_OpSetSpriteProperty",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_SET_SPRITE_PROPERTY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_SET_SPRITE_PROPERTY"
        }
      }
    },
    "Script_OpSetVariable": {
      "function": {
        "analysis": {
          "en": {
            "address": 4258800,
            "rva": 64496,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpSetVariable_OpJumpTable"
                },
                "instr_offset": 273,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4259280,
            "rva": 64976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpSetVariable_OpJumpTable"
                },
                "instr_offset": 273,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4259280,
            "rva": 64976,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_OpSetVariable_OpJumpTable"
                },
                "instr_offset": 273,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckButtonState"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 222,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Script_OpSetVariable_OpJumpTable"
            },
            "instr_offset": 273,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C1 E3 08 57 0B DA E8 ??",
          "match_offset": -91
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 130,
          "symbol_index": 130,
          "accessor": "DTTR_PCDOGS_F_Script_OpSetVariable",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_SET_VARIABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_SET_VARIABLE"
        }
      }
    },
    "Script_OpSetVariable_OpJumpTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4259224,
            "rva": 64920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 273,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4259704,
            "rva": 65400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 273,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4259704,
            "rva": 65400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 273,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_OpSetVariable"
            },
            "instr_offset": 273,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Script_OpSetVariable",
          "instr_offset": 273,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Four-entry uint32_t jump table used by Script_OpSetVariable for arithmetic opcode dispatch.",
        "sdk": {
          "id": 27,
          "symbol_index": 27,
          "accessor": "DTTR_PCDOGS_D_Script_OpSetVariable_OpJumpTable",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_OP_SET_VARIABLE_OP_JUMP_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_OP_SET_VARIABLE_OP_JUMP_TABLE"
        }
      }
    },
    "Script_OpStopSound": {
      "function": {
        "analysis": {
          "en": {
            "address": 4263360,
            "rva": 69056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_GetStateIndex"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4263840,
            "rva": 69536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_GetStateIndex"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4263840,
            "rva": 69536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_GetStateIndex"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerSoundAtPosition"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 83 C4 08 85 C0 7C ?? 8B 15 ?? ?? ?? ?? 6A",
          "match_offset": -77
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 147,
          "symbol_index": 147,
          "accessor": "DTTR_PCDOGS_F_Script_OpStopSound",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_STOP_SOUND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_STOP_SOUND"
        }
      }
    },
    "Script_OpTestPathTrace": {
      "function": {
        "analysis": {
          "en": {
            "address": 4262816,
            "rva": 68512,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4263296,
            "rva": 68992,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4263296,
            "rva": 68992,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "58 FF 8B EB 72 ?? 80 ??",
          "match_offset": -78
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 144,
          "symbol_index": 144,
          "accessor": "DTTR_PCDOGS_F_Script_OpTestPathTrace",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_TEST_PATH_TRACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_TEST_PATH_TRACE"
        }
      }
    },
    "Script_OpTraceActorPath": {
      "function": {
        "analysis": {
          "en": {
            "address": 4261984,
            "rva": 67680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4262464,
            "rva": 68160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4262464,
            "rva": 68160,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 515,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Entity_SetActorProperty"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 C0 04 89 07 8B 35 ??",
          "match_offset": -75
        },
        "docs": "Parses a path-trace command from *ip, resolves special entity-slot/actor selectors against current_level_data->entity_array, snapshots transient actor path-result state, and invokes Actor_TracePath before advancing the script pointer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 142,
          "symbol_index": 142,
          "accessor": "DTTR_PCDOGS_F_Script_OpTraceActorPath",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_TRACE_ACTOR_PATH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_TRACE_ACTOR_PATH"
        }
      }
    },
    "Script_OpTriggerLevelTransition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4264016,
            "rva": 69712,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4264496,
            "rva": 70192,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4264496,
            "rva": 70192,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Level_TriggerTransition"
                },
                "instr_offset": 320,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "03 C8 40 89 06 8B E9 ??",
          "match_offset": -28
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 152,
          "symbol_index": 152,
          "accessor": "DTTR_PCDOGS_F_Script_OpTriggerLevelTransition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_TRIGGER_LEVEL_TRANSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_TRIGGER_LEVEL_TRANSITION"
        }
      }
    },
    "Script_OpTriggerMusicFade": {
      "function": {
        "analysis": {
          "en": {
            "address": 4264640,
            "rva": 70336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4265120,
            "rva": 70816,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4265120,
            "rva": 70816,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "EF C1 FA 05 8B CA C1 E9 ??",
          "match_offset": -129
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 154,
          "symbol_index": 154,
          "accessor": "DTTR_PCDOGS_F_Script_OpTriggerMusicFade",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_TRIGGER_MUSIC_FADE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_TRIGGER_MUSIC_FADE"
        }
      }
    },
    "Script_OpTriggerMusicTransition": {
      "function": {
        "analysis": {
          "en": {
            "address": 4264368,
            "rva": 70064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4264848,
            "rva": 70544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4264848,
            "rva": 70544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_TriggerMusicTransition"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 10 8B 44 24 18 56 C7 05 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 153,
          "symbol_index": 153,
          "accessor": "DTTR_PCDOGS_F_Script_OpTriggerMusicTransition",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_TRIGGER_MUSIC_TRANSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_TRIGGER_MUSIC_TRANSITION"
        }
      }
    },
    "Script_OpWaitForAnimation": {
      "function": {
        "analysis": {
          "en": {
            "address": 4261584,
            "rva": 67280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckAnimationComplete"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4262064,
            "rva": 67760,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckAnimationComplete"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4262064,
            "rva": 67760,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CheckAnimationComplete"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 C0 02 89 06 8B 3D ??",
          "match_offset": -29
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 138,
          "symbol_index": 138,
          "accessor": "DTTR_PCDOGS_F_Script_OpWaitForAnimation",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_WAIT_FOR_ANIMATION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_WAIT_FOR_ANIMATION"
        }
      }
    },
    "Script_OpWalkToTarget": {
      "function": {
        "analysis": {
          "en": {
            "address": 4259952,
            "rva": 65648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 355,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4260432,
            "rva": 66128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 355,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4260432,
            "rva": 66128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_TracePath"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 334,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 355,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "ip",
              "type": "uint8_t**"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "89 4C 24 1C 75 ?? A1 ??",
          "match_offset": -98
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 134,
          "symbol_index": 134,
          "accessor": "DTTR_PCDOGS_F_Script_OpWalkToTarget",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_OP_WALK_TO_TARGET",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_OP_WALK_TO_TARGET"
        }
      }
    },
    "Script_OpcodeTable": {
      "type": {
        "members": [
          {
            "type": "Script_CommandCallback",
            "name": "handlers[45]",
            "offset": 0,
            "doc": "Script opcode handler array. Entry 0 is null in the table; non-null entries use the Script_CommandCallback ABI."
          }
        ],
        "size": 180,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Script opcode dispatch table used by Script_OpRunWithActor to route native script opcodes.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Script_OpcodeTable"
        }
      }
    },
    "Script_ResolveVariableRef": {
      "function": {
        "analysis": {
          "en": {
            "address": 4258064,
            "rva": 63760,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_ResolveVariableRef_Base"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_GetVariableById"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpDecrementVariable"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEmitSignal"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetSpriteProperty"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_SetVariableById"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4258544,
            "rva": 64240,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_ResolveVariableRef_Base"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_GetVariableById"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpDecrementVariable"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEmitSignal"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetSpriteProperty"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_SetVariableById"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4258544,
            "rva": 64240,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Script_ResolveVariableRef_Base"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_GetVariableById"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 190,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 243,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpBranchConditional"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpDecrementVariable"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpEmitSignal"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetSpriteProperty"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 97,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetVariable"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_SetVariableById"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "value_ref",
              "type": "int32_t**"
            },
            {
              "name": "ref_id",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Script_ResolveVariableRef_Base"
            },
            "instr_offset": 69,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 0C 8B 4C 24 08 83 F8 09 7D ?? 8B ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 127,
          "symbol_index": 127,
          "accessor": "DTTR_PCDOGS_F_Script_ResolveVariableRef",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_RESOLVE_VARIABLE_REF",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_RESOLVE_VARIABLE_REF"
        }
      }
    },
    "Script_ResolveVariableRef_Base": {
      "data": {
        "analysis": {
          "en": {
            "address": 27829648,
            "rva": 23635344,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27840912,
            "rva": 23646608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840336,
            "rva": 23646032,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 69,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Script_ResolveVariableRef"
            },
            "instr_offset": 69,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 912,
          "symbol_index": 912,
          "accessor": "DTTR_PCDOGS_D_Script_ResolveVariableRef_Base",
          "sdk_id": "DTTR_PCDOGS_DATA_SCRIPT_RESOLVE_VARIABLE_REF_BASE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SCRIPT_RESOLVE_VARIABLE_REF_BASE"
        }
      }
    },
    "Script_SetVariableById": {
      "function": {
        "analysis": {
          "en": {
            "address": 4258208,
            "rva": 63904,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4258688,
            "rva": 64384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4258688,
            "rva": 64384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Script_ResolveVariableRef"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessMovementBehavior"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "progress_var_index",
              "type": "uint8_t",
              "docs": "Selector byte position by +9 before resolving the backing script/global progress variable."
            },
            {
              "name": "progress_value",
              "type": "int32_t",
              "docs": "Value written to the resolved progress variable."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? 8B 44 24 10 8B 54",
          "match_offset": -22
        },
        "docs": "Resolves a script variable by id, writes progress_value to the resolved int32 storage, and returns that storage pointer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 129,
          "symbol_index": 129,
          "accessor": "DTTR_PCDOGS_F_Script_SetVariableById",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SCRIPT_SET_VARIABLE_BY_ID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SCRIPT_SET_VARIABLE_BY_ID"
        }
      }
    },
    "Settings_GetLanguage": {
      "function": {
        "analysis": {
          "eu": {
            "address": 4355312,
            "rva": 161008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 729,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 3421,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 3655,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 3712,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 3722,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 3760,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 974,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RunNoOpStub"
                },
                "instr_offset": 1004,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 1005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 1030,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 930,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 945,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 970,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 422,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_CheckContinueSlotLanguage"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355312,
            "rva": 161008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 139,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 633,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 3389,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 3623,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 3680,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 3690,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 3728,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 1005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 1030,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 930,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 945,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 422,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_CheckContinueSlotLanguage"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 385,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 419,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0F BE 05 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90 8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 0F BE 05 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90 8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 0F BE 05 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90 8B 44 24 04 BA",
          "match_offset": 0
        },
        "docs": "Returns the signed persisted language ID (Config_GameSettings.language). The pattern spans the byte-identical accessor neighborhood through the Level_GetDataPointer head so it anchors the language getter instead of a twin.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 307,
          "symbol_index": 307,
          "accessor": "DTTR_PCDOGS_F_Settings_GetLanguage",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SETTINGS_GET_LANGUAGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SETTINGS_GET_LANGUAGE"
        }
      }
    },
    "Settings_GetRumbleSuppressFlag": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353392,
            "rva": 159088,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 500,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 519,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355344,
            "rva": 161040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 500,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 519,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355344,
            "rva": 161040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_TriggerRumbleIfAllowed"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 500,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 519,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0F BE 05 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90 8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 0F BE 05 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90 8B 44 24 04 BA",
          "match_offset": 0
        },
        "docs": "Returns the signed controller-vibration suppress flag. The pattern includes the two trailing setters and the byte-identical Save_IsGameComplete getter so it anchors the rumble getter instead of colliding with that routine.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 306,
          "symbol_index": 306,
          "accessor": "DTTR_PCDOGS_F_Settings_GetRumbleSuppressFlag",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SETTINGS_GET_RUMBLE_SUPPRESS_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SETTINGS_GET_RUMBLE_SUPPRESS_FLAG"
        }
      }
    },
    "Settings_Language": {
      "data": {
        "analysis": {
          "en": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Settings_SetLanguage"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839630,
            "rva": 645326,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Settings_SetLanguage"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839614,
            "rva": 645310,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Settings_SetLanguage"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Settings_SetLanguage"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Persisted language ID byte (Config_GameSettings.language).",
        "sdk": {
          "id": 521,
          "symbol_index": 521,
          "accessor": "DTTR_PCDOGS_D_Settings_Language",
          "sdk_id": "DTTR_PCDOGS_DATA_SETTINGS_LANGUAGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SETTINGS_LANGUAGE"
        }
      }
    },
    "Settings_RumbleSuppressFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 4830992,
            "rva": 636688,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Settings_SetRumbleSuppressFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839632,
            "rva": 645328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Settings_SetRumbleSuppressFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839616,
            "rva": 645312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Settings_SetRumbleSuppressFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Settings_SetRumbleSuppressFlag"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 520,
          "symbol_index": 520,
          "accessor": "DTTR_PCDOGS_D_Settings_RumbleSuppressFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_SETTINGS_RUMBLE_SUPPRESS_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SETTINGS_RUMBLE_SUPPRESS_FLAG"
        }
      }
    },
    "Settings_SetLanguage": {
      "function": {
        "analysis": {
          "en": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Settings_Language"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4355328,
            "rva": 161024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Settings_Language"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 360,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 460,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 563,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355328,
            "rva": 161024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Settings_Language"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 360,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 460,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 563,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 45,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "language_id",
              "type": "char",
              "docs": "Language ID: 0 English; 1..4 the EU-disc language set; 5..7 and 8 the Nordic set."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Settings_Language"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 0F BE 05 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90 8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 0F BE 05 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90 8B 44 24 04 BA",
          "match_offset": 0
        },
        "docs": "Stores the persisted language ID (Config_GameSettings.language) and returns the stored value. Called by the multi-language boot flow with the selected language and zeroed by Save_InitializeNewGame.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 308,
          "symbol_index": 308,
          "accessor": "DTTR_PCDOGS_F_Settings_SetLanguage",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SETTINGS_SET_LANGUAGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SETTINGS_SET_LANGUAGE"
        }
      }
    },
    "Settings_SetRumbleSuppressFlag": {
      "function": {
        "analysis": {
          "en": {
            "address": 4353408,
            "rva": 159104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Settings_RumbleSuppressFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 511,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4355360,
            "rva": 161056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Settings_RumbleSuppressFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 511,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4355360,
            "rva": 161056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Settings_RumbleSuppressFlag"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 511,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Save_InitializeNewGame"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "suppress",
              "type": "char",
              "docs": "Nonzero suppresses controller vibration; zero allows rumble."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Settings_RumbleSuppressFlag"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 8A 44 24 04 A2 ?? ?? ?? ?? C3 90 90 90 90 90 90 0F BE 05 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90 8B 44 24 04 BA ??",
          "match_offset": 0
        },
        "docs": "Stores the controller-vibration suppress flag and returns the stored value.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 305,
          "symbol_index": 305,
          "accessor": "DTTR_PCDOGS_F_Settings_SetRumbleSuppressFlag",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SETTINGS_SET_RUMBLE_SUPPRESS_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SETTINGS_SET_RUMBLE_SUPPRESS_FLAG"
        }
      }
    },
    "Shared_FontDataCursor": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507856,
            "rva": 2313552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 184,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 184,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 184,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Shared_LoadCommonResources"
            },
            "instr_offset": 184,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Shared/common font-data cursor used during common resource loading; exact package ownership remains unstable.",
        "sdk": {
          "id": 831,
          "symbol_index": 831,
          "accessor": "DTTR_PCDOGS_D_Shared_FontDataCursor",
          "sdk_id": "DTTR_PCDOGS_DATA_SHARED_FONT_DATA_CURSOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SHARED_FONT_DATA_CURSOR"
        }
      }
    },
    "Shared_LoadCommonResources": {
      "function": {
        "analysis": {
          "en": {
            "address": 4355920,
            "rva": 161616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_FontDataCursor"
                },
                "instr_offset": 184,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_PKGResourceDataBuffer"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_PKGResourceHandle1"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_PKGResourceSharedMaterialSection"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_TimerState"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_MaterialFrameSetCursor"
                },
                "instr_offset": 196,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_TextureDataRefsCursor"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 110,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 210,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 69,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_SetTable"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_FontDataCursor"
                },
                "instr_offset": 184,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_PKGResourceDataBuffer"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_PKGResourceHandle1"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_PKGResourceSharedMaterialSection"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_TimerState"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_MaterialFrameSetCursor"
                },
                "instr_offset": 196,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_TextureDataRefsCursor"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_FontDataCursor"
                },
                "instr_offset": 184,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_PKGResourceDataBuffer"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_PKGResourceHandle1"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_PKGResourceSharedMaterialSection"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_LoadCommonResources_TimerState"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_MaterialFrameSetCursor"
                },
                "instr_offset": 196,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Shared_TextureDataRefsCursor"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Shared_LoadCommonResources_PKGResourceDataBuffer"
            },
            "instr_offset": 77,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Shared_LoadCommonResources_TimerState"
            },
            "instr_offset": 50,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Shared_LoadCommonResources_PKGResourceHandle1"
            },
            "instr_offset": 25,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Shared_MaterialFrameSetCursor"
            },
            "instr_offset": 196,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Shared_LoadCommonResources_PKGResourceSharedMaterialSection"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Shared_FontDataCursor"
            },
            "instr_offset": 184,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Shared_TextureDataRefsCursor"
            },
            "instr_offset": 176,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 0F 85 ?? ?? ?? ?? 6A 00",
          "match_offset": 0
        },
        "docs": "Common HUD/shared resource loader. EU/SC builds replace it with a multi-language loader plus the locale string-table path (String_InstallLocaleOverlay).",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 327,
          "symbol_index": 327,
          "accessor": "DTTR_PCDOGS_F_Shared_LoadCommonResources",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SHARED_LOAD_COMMON_RESOURCES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SHARED_LOAD_COMMON_RESOURCES"
        }
      }
    },
    "Shared_LoadCommonResources_PKGResourceDataBuffer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831700,
            "rva": 637396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Shared_LoadCommonResources"
            },
            "instr_offset": 77,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Shared_LoadCommonResources",
          "instr_offset": 77,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Resource/common-data buffer pointer populated by Shared_LoadCommonResources.",
        "sdk": {
          "id": 533,
          "symbol_index": 533,
          "accessor": "DTTR_PCDOGS_D_Shared_LoadCommonResources_PKGResourceDataBuffer",
          "sdk_id": "DTTR_PCDOGS_DATA_SHARED_LOAD_COMMON_RESOURCES_PKG_RESOURCE_DATA_BUFFER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SHARED_LOAD_COMMON_RESOURCES_PKG_RESOURCE_DATA_BUFFER"
        }
      }
    },
    "Shared_LoadCommonResources_PKGResourceHandle1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831856,
            "rva": 637552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Shared_LoadCommonResources"
            },
            "instr_offset": 25,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 563,
          "symbol_index": 563,
          "accessor": "DTTR_PCDOGS_D_Shared_LoadCommonResources_PKGResourceHandle1",
          "sdk_id": "DTTR_PCDOGS_DATA_SHARED_LOAD_COMMON_RESOURCES_PKG_RESOURCE_HANDLE1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SHARED_LOAD_COMMON_RESOURCES_PKG_RESOURCE_HANDLE1"
        }
      }
    },
    "Shared_LoadCommonResources_PKGResourceSharedMaterialSection": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507288,
            "rva": 2312984,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Shared_LoadCommonResources"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Material_SectionHeader*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Shared_LoadCommonResources",
          "instr_offset": 0,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Shared/common material section header/base loaded by Shared_LoadCommonResources.",
        "sdk": {
          "id": 825,
          "symbol_index": 825,
          "accessor": "DTTR_PCDOGS_D_Shared_LoadCommonResources_PKGResourceSharedMaterialSection",
          "sdk_id": "DTTR_PCDOGS_DATA_SHARED_LOAD_COMMON_RESOURCES_PKG_RESOURCE_SHARED_MATERIAL_SECTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SHARED_LOAD_COMMON_RESOURCES_PKG_RESOURCE_SHARED_MATERIAL_SECTION"
        }
      }
    },
    "Shared_LoadCommonResources_TimerState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831848,
            "rva": 637544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 50,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Shared_LoadCommonResources"
            },
            "instr_offset": 50,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 561,
          "symbol_index": 561,
          "accessor": "DTTR_PCDOGS_D_Shared_LoadCommonResources_TimerState",
          "sdk_id": "DTTR_PCDOGS_DATA_SHARED_LOAD_COMMON_RESOURCES_TIMER_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SHARED_LOAD_COMMON_RESOURCES_TIMER_STATE"
        }
      }
    },
    "Shared_MaterialFrameSetCursor": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507272,
            "rva": 2312968,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 196,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 196,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 196,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Shared_LoadCommonResources"
            },
            "instr_offset": 196,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Material_FrameSet*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Shared_LoadCommonResources",
          "instr_offset": 196,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Cursor into shared material frame-set storage advanced by Material_BuildTextureArray.",
        "sdk": {
          "id": 819,
          "symbol_index": 819,
          "accessor": "DTTR_PCDOGS_D_Shared_MaterialFrameSetCursor",
          "sdk_id": "DTTR_PCDOGS_DATA_SHARED_MATERIAL_FRAME_SET_CURSOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SHARED_MATERIAL_FRAME_SET_CURSOR"
        }
      }
    },
    "Shared_TextureDataRefsCursor": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507860,
            "rva": 2313556,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Shared_LoadCommonResources"
            },
            "instr_offset": 176,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Shared/common texture data-reference cursor used during common resource loading; exact package ownership remains unstable.",
        "sdk": {
          "id": 832,
          "symbol_index": 832,
          "accessor": "DTTR_PCDOGS_D_Shared_TextureDataRefsCursor",
          "sdk_id": "DTTR_PCDOGS_DATA_SHARED_TEXTURE_DATA_REFS_CURSOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SHARED_TEXTURE_DATA_REFS_CURSOR"
        }
      }
    },
    "Signal_ClearQueue": {
      "function": {
        "analysis": {
          "en": {
            "address": 4456048,
            "rva": 261744,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Signal_QueueCount"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461584,
            "rva": 267280,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Signal_QueueCount"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461600,
            "rva": 267296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Signal_QueueCount"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_ResetState"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Signal_QueueCount"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C6 05 ?? ?? ?? ?? 00 C3 90 90 90 90 90 90 90 90 A0 ?? ?? ?? ?? 84 C0 74 ?? 8B 54 24 04 55 56 57 32 C0 0F BF 32 85 F6 74 ?? C6 42 02 00 B9 ??",
          "match_offset": 0
        },
        "docs": "Clears the queued signal/event count in signal queue state.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 566,
          "symbol_index": 566,
          "accessor": "DTTR_PCDOGS_F_Signal_ClearQueue",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SIGNAL_CLEAR_QUEUE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SIGNAL_CLEAR_QUEUE"
        }
      }
    },
    "Signal_ClearTimedEventList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4456176,
            "rva": 261872,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Signal_TimedEventListHead"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461712,
            "rva": 267408,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Signal_TimedEventListHead"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461728,
            "rva": 267424,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Signal_TimedEventListHead"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Signal_TimedEventListHead"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 85 C9 74 ?? 83",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 568,
          "symbol_index": 568,
          "accessor": "DTTR_PCDOGS_F_Signal_ClearTimedEventList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SIGNAL_CLEAR_TIMED_EVENT_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SIGNAL_CLEAR_TIMED_EVENT_LIST"
        }
      }
    },
    "Signal_Poll": {
      "function": {
        "analysis": {
          "en": {
            "address": 4456064,
            "rva": 261760,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Signal_Queue"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ValidateDirectionAndProcessInput"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPollSignal"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461600,
            "rva": 267296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Signal_Queue"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ValidateDirectionAndProcessInput"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPollSignal"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461616,
            "rva": 267312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Signal_Queue"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ValidateDirectionAndProcessInput"
                },
                "instr_offset": 43,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateSpawnLogic"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPollSignal"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "event_buffer",
              "type": "int16_t*"
            },
            {
              "name": "max_events",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Signal_Queue"
            },
            "instr_offset": 29,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "74 ?? C6 42 02 00 B9 ??",
          "match_offset": -23
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 567,
          "symbol_index": 567,
          "accessor": "DTTR_PCDOGS_F_Signal_Poll",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SIGNAL_POLL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SIGNAL_POLL"
        }
      }
    },
    "Signal_Queue": {
      "data": {
        "analysis": {
          "en": {
            "address": 4837216,
            "rva": 642912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4847448,
            "rva": 653144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4846872,
            "rva": 652568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_Poll"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Signal_Poll"
            },
            "instr_offset": 29,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int16_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Signal_Poll",
          "instr_offset": 29,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Base of the queued signal records scanned by Signal_Poll.",
        "sdk": {
          "id": 699,
          "symbol_index": 699,
          "accessor": "DTTR_PCDOGS_D_Signal_Queue",
          "sdk_id": "DTTR_PCDOGS_DATA_SIGNAL_QUEUE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SIGNAL_QUEUE"
        }
      }
    },
    "Signal_QueueCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4837212,
            "rva": 642908,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_ClearQueue"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4847444,
            "rva": 653140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_ClearQueue"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4846868,
            "rva": 652564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_ClearQueue"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Signal_ClearQueue"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Signal_ClearQueue",
          "instr_offset": 0,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Number of queued signal entries cleared by Signal_ClearQueue and consumed by Signal_Poll.",
        "sdk": {
          "id": 698,
          "symbol_index": 698,
          "accessor": "DTTR_PCDOGS_D_Signal_QueueCount",
          "sdk_id": "DTTR_PCDOGS_DATA_SIGNAL_QUEUE_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SIGNAL_QUEUE_COUNT"
        }
      }
    },
    "Signal_TimedEventListHead": {
      "data": {
        "analysis": {
          "en": {
            "address": 4837208,
            "rva": 642904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_ClearTimedEventList"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4847440,
            "rva": 653136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_ClearTimedEventList"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4846864,
            "rva": 652560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Signal_ClearTimedEventList"
                },
                "instr_offset": 0,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Signal_ClearTimedEventList"
            },
            "instr_offset": 0,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Signal_ClearTimedEventList",
          "instr_offset": 0,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Head pointer for the timed signal/event linked list cleared by Signal_ClearTimedEventList.",
        "sdk": {
          "id": 697,
          "symbol_index": 697,
          "accessor": "DTTR_PCDOGS_D_Signal_TimedEventListHead",
          "sdk_id": "DTTR_PCDOGS_DATA_SIGNAL_TIMED_EVENT_LIST_HEAD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_SIGNAL_TIMED_EVENT_LIST_HEAD"
        }
      }
    },
    "Signal_UpdateTimedEvents": {
      "function": {
        "analysis": {
          "en": {
            "address": 4456976,
            "rva": 262672,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 374,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4462528,
            "rva": 268224,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4462544,
            "rva": 268240,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlayLevelSoundIndexAtPosition"
                },
                "instr_offset": 193,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 111,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 56 8B 35 ?? ?? ?? ?? 33",
          "match_offset": 0
        },
        "docs": "Updates queued timed signal events for the current frame.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 572,
          "symbol_index": 572,
          "accessor": "DTTR_PCDOGS_F_Signal_UpdateTimedEvents",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SIGNAL_UPDATE_TIMED_EVENTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SIGNAL_UPDATE_TIMED_EVENTS"
        }
      }
    },
    "Sort_CompareCallback": {
      "type": {
        "ret": "int32_t",
        "params": [
          {
            "type": "void const*",
            "name": "lhs",
            "doc": null
          },
          {
            "type": "void const*",
            "name": "rhs",
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "function_type_alias",
        "docs": "CRT qsort/shortsort comparator ABI; returns negative, zero, or positive for lhs vs rhs ordering.",
        "calling_convention": "cdecl",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Sort_CompareCallback"
        }
      }
    },
    "Sort_RunInsertionSort": {
      "function": {
        "analysis": {
          "en": {
            "address": 4482394,
            "rva": 288090,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4490234,
            "rva": 295930,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4490010,
            "rva": 295706,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Sort_RunQuickSort"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "first_element",
              "type": "char*"
            },
            {
              "name": "last_element",
              "type": "char*"
            },
            {
              "name": "element_size",
              "type": "uint32_t"
            },
            {
              "name": "compare",
              "type": "Sort_CompareCallback"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 8B 45 08 57 8B 7D 0C 3B F8 76 ?? 8B 4D 10 53 03 C1 56 89 45 0C",
          "match_offset": 0
        },
        "docs": "Insertion-sort helper used by Sort_RunQuickSort for small partitions; returns a residual element/swap cursor ignored by the qsort caller.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 669,
          "symbol_index": 669,
          "accessor": "DTTR_PCDOGS_F_Sort_RunInsertionSort",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SORT_RUN_INSERTION_SORT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SORT_RUN_INSERTION_SORT"
        }
      }
    },
    "Sort_RunQuickSort": {
      "function": {
        "analysis": {
          "en": {
            "address": 4482054,
            "rva": 287750,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Sort_RunInsertionSort"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 345,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4489894,
            "rva": 295590,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Sort_RunInsertionSort"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 345,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4489670,
            "rva": 295366,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 137,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_SwapBytes"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Sort_RunInsertionSort"
                },
                "instr_offset": 86,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "DDraw_EnumerateCallback"
                },
                "instr_offset": 345,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "base",
              "type": "void*"
            },
            {
              "name": "count",
              "type": "uint32_t"
            },
            {
              "name": "element_size",
              "type": "uint32_t"
            },
            {
              "name": "compare",
              "type": "Sort_CompareCallback",
              "docs": "Comparator callback used by the CRT qsort implementation."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 81 EC F8 00 00 00 53 56 8B 75 0C 57 83 FE 02 0F 82 ?? ?? ?? ??",
          "match_offset": 0
        },
        "docs": "CRT qsort-style quicksort over count elements of elementSize bytes using the comparator callback.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 668,
          "symbol_index": 668,
          "accessor": "DTTR_PCDOGS_F_Sort_RunQuickSort",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_SORT_RUN_QUICK_SORT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_SORT_RUN_QUICK_SORT"
        }
      }
    },
    "String_CheckFloatPrecision": {
      "function": {
        "analysis": {
          "en": {
            "address": 4484946,
            "rva": 290642,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_CheckFloatPrecision_CRTNegativeTwo"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_CheckFloatPrecision_CRTZero"
                },
                "instr_offset": 42,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4492786,
            "rva": 298482,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_CheckFloatPrecision_CRTNegativeTwo"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_CheckFloatPrecision_CRTZero"
                },
                "instr_offset": 42,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4492562,
            "rva": 298258,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_CheckFloatPrecision_CRTNegativeTwo"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_CheckFloatPrecision_CRTZero"
                },
                "instr_offset": 42,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "String_CheckFloatPrecision_CRTZero"
            },
            "instr_offset": 42,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "String_CheckFloatPrecision_CRTNegativeTwo"
            },
            "instr_offset": 15,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 18 DD 05 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 674,
          "symbol_index": 674,
          "accessor": "DTTR_PCDOGS_F_String_CheckFloatPrecision",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_CHECK_FLOAT_PRECISION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_CHECK_FLOAT_PRECISION"
        }
      }
    },
    "String_CheckFloatPrecision_CRTNegativeTwo": {
      "data": {
        "analysis": {
          "en": {
            "address": 4510176,
            "rva": 315872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_CheckFloatPrecision"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518400,
            "rva": 324096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_CheckFloatPrecision"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518400,
            "rva": 324096,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_CheckFloatPrecision"
                },
                "instr_offset": 15,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_CheckFloatPrecision"
            },
            "instr_offset": 15,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 105,
          "symbol_index": 105,
          "accessor": "DTTR_PCDOGS_D_String_CheckFloatPrecision_CRTNegativeTwo",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_CHECK_FLOAT_PRECISION_CRT_NEGATIVE_TWO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_CHECK_FLOAT_PRECISION_CRT_NEGATIVE_TWO"
        }
      }
    },
    "String_CheckFloatPrecision_CRTZero": {
      "data": {
        "analysis": {
          "en": {
            "address": 4510168,
            "rva": 315864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_CheckFloatPrecision"
                },
                "instr_offset": 42,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518008,
            "rva": 323704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_CheckFloatPrecision"
                },
                "instr_offset": 42,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518008,
            "rva": 323704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_CheckFloatPrecision"
                },
                "instr_offset": 42,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_CheckFloatPrecision"
            },
            "instr_offset": 42,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 104,
          "symbol_index": 104,
          "accessor": "DTTR_PCDOGS_D_String_CheckFloatPrecision_CRTZero",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_CHECK_FLOAT_PRECISION_CRT_ZERO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_CHECK_FLOAT_PRECISION_CRT_ZERO"
        }
      }
    },
    "String_ConcatCRTString": {
      "function": {
        "analysis": {
          "en": {
            "address": 4499728,
            "rva": 305424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7404,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7422,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4507568,
            "rva": 313264,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7404,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7422,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4507344,
            "rva": 313040,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7404,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7422,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "dest",
              "type": "char*"
            },
            {
              "name": "src",
              "type": "char const*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4C 24 04 57 F7 ?? 03 00 00 00 74 ?? 8A ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 696,
          "symbol_index": 696,
          "accessor": "DTTR_PCDOGS_F_String_ConcatCRTString",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_CONCAT_CRT_STRING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_CONCAT_CRT_STRING"
        }
      }
    },
    "String_ConvertFloatGeneral": {
      "function": {
        "analysis": {
          "en": {
            "address": 4485785,
            "rva": 291481,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_FormatFloatScientific"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4493625,
            "rva": 299321,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_FormatFloatScientific"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4493401,
            "rva": 299097,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_FormatFloatScientific"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "value",
              "type": "double*",
              "docs": "Input double to convert."
            },
            {
              "name": "buffer",
              "type": "char*",
              "docs": "Destination NUL-terminated output buffer."
            },
            {
              "name": "precision",
              "type": "int32_t",
              "docs": "Requested significant-digit precision."
            },
            {
              "name": "uppercase",
              "type": "int32_t",
              "docs": "Nonzero selects an uppercase E exponent marker if scientific notation is used."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 DD 07 DD 1C 24 E8 ??",
          "match_offset": -10
        },
        "docs": "CRT general-format conversion: chooses fixed or scientific notation from the decimal exponent and returns buffer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 679,
          "symbol_index": 679,
          "accessor": "DTTR_PCDOGS_F_String_ConvertFloatGeneral",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_CONVERT_FLOAT_GENERAL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_CONVERT_FLOAT_GENERAL"
        }
      }
    },
    "String_ConvertFloatToDecimalString": {
      "function": {
        "analysis": {
          "en": {
            "address": 4507151,
            "rva": 312847,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTIND"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTINF"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTQNAN"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTSNaN"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 829,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4514991,
            "rva": 320687,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTIND"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTINF"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTQNAN"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTSNaN"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 829,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4514767,
            "rva": 320463,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTIND"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTINF"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTQNAN"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToDecimalString_CRTSNaN"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteBytes"
                },
                "instr_offset": 829,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "mant_lo",
              "type": "uint32_t",
              "docs": "Low mantissa dword of the x87 extended-precision value."
            },
            {
              "name": "mant_hi",
              "type": "uint32_t",
              "docs": "High mantissa dword of the x87 extended-precision value."
            },
            {
              "name": "sign_exponent",
              "type": "int16_t",
              "docs": "X87 exponent and sign word; the sign bit selects a leading space or minus sign."
            },
            {
              "name": "buffer",
              "type": "char*"
            },
            {
              "name": "flags",
              "type": "char",
              "docs": "Conversion flags; bit 0 makes the digit count relative to the computed decimal exponent."
            },
            {
              "name": "out_decimal",
              "type": "char*",
              "docs": "Output decimal-record buffer receiving exponent, sign, digit length, digits, and terminator."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "String_ConvertFloatToDecimalString_CRTQNAN"
            },
            "instr_offset": 245,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "String_ConvertFloatToDecimalString_CRTINF"
            },
            "instr_offset": 216,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "String_ConvertFloatToDecimalString_CRTIND"
            },
            "instr_offset": 199,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "String_ConvertFloatToDecimalString_CRTSNaN"
            },
            "instr_offset": 173,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C6 45 E7 CC C6 45 E8 ??",
          "match_offset": -45
        },
        "docs": "Converts the split x87 extended-precision value passed on the stack ($I10_OUTPUT-style) into the CRT decimal record, handling zero, INF/IND/QNAN/SNAN, rounding, and digit trimming.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 698,
          "symbol_index": 698,
          "accessor": "DTTR_PCDOGS_F_String_ConvertFloatToDecimalString",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_CONVERT_FLOAT_TO_DECIMAL_STRING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_CONVERT_FLOAT_TO_DECIMAL_STRING"
        }
      }
    },
    "String_ConvertFloatToDecimalString_CRTIND": {
      "data": {
        "analysis": {
          "en": {
            "address": 4511256,
            "rva": 316952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4519480,
            "rva": 325176,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4519480,
            "rva": 325176,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 199,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_ConvertFloatToDecimalString"
            },
            "instr_offset": 199,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 110,
          "symbol_index": 110,
          "accessor": "DTTR_PCDOGS_D_String_ConvertFloatToDecimalString_CRTIND",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_CONVERT_FLOAT_TO_DECIMAL_STRING_CRTIND",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_CONVERT_FLOAT_TO_DECIMAL_STRING_CRTIND"
        }
      }
    },
    "String_ConvertFloatToDecimalString_CRTINF": {
      "data": {
        "analysis": {
          "en": {
            "address": 4511248,
            "rva": 316944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4519472,
            "rva": 325168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4519472,
            "rva": 325168,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 216,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_ConvertFloatToDecimalString"
            },
            "instr_offset": 216,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 109,
          "symbol_index": 109,
          "accessor": "DTTR_PCDOGS_D_String_ConvertFloatToDecimalString_CRTINF",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_CONVERT_FLOAT_TO_DECIMAL_STRING_CRTINF",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_CONVERT_FLOAT_TO_DECIMAL_STRING_CRTINF"
        }
      }
    },
    "String_ConvertFloatToDecimalString_CRTQNAN": {
      "data": {
        "analysis": {
          "en": {
            "address": 4511240,
            "rva": 316936,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4519464,
            "rva": 325160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4519464,
            "rva": 325160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_ConvertFloatToDecimalString"
            },
            "instr_offset": 245,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 108,
          "symbol_index": 108,
          "accessor": "DTTR_PCDOGS_D_String_ConvertFloatToDecimalString_CRTQNAN",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_CONVERT_FLOAT_TO_DECIMAL_STRING_CRTQNAN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_CONVERT_FLOAT_TO_DECIMAL_STRING_CRTQNAN"
        }
      }
    },
    "String_ConvertFloatToDecimalString_CRTSNaN": {
      "data": {
        "analysis": {
          "en": {
            "address": 4511264,
            "rva": 316960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4519488,
            "rva": 325184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4519488,
            "rva": 325184,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_ConvertFloatToDecimalString"
            },
            "instr_offset": 173,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 111,
          "symbol_index": 111,
          "accessor": "DTTR_PCDOGS_D_String_ConvertFloatToDecimalString_CRTSNaN",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_CONVERT_FLOAT_TO_DECIMAL_STRING_CRTS_NA_N",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_CONVERT_FLOAT_TO_DECIMAL_STRING_CRTS_NA_N"
        }
      }
    },
    "String_ConvertFloatToExponential": {
      "function": {
        "analysis": {
          "en": {
            "address": 4485303,
            "rva": 290999,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToExponential_CRTExponentSuffix"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToExponential_FormatFlags"
                },
                "instr_offset": 3,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToExponential_FormatPrecision"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_FormatFloatScientific"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4493143,
            "rva": 298839,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToExponential_CRTExponentSuffix"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToExponential_FormatFlags"
                },
                "instr_offset": 3,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToExponential_FormatPrecision"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_FormatFloatScientific"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4492919,
            "rva": 298615,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToExponential_CRTExponentSuffix"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToExponential_FormatFlags"
                },
                "instr_offset": 3,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_ConvertFloatToExponential_FormatPrecision"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_FormatFloatScientific"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "value",
              "type": "double*",
              "docs": "Input double to convert."
            },
            {
              "name": "buffer",
              "type": "char*",
              "docs": "Destination NUL-terminated output buffer."
            },
            {
              "name": "precision",
              "type": "int32_t",
              "docs": "Number of fractional digits before the exponent suffix."
            },
            {
              "name": "uppercase",
              "type": "int32_t",
              "docs": "Nonzero selects an uppercase E exponent marker."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "String_ConvertFloatToExponential_CRTExponentSuffix"
            },
            "instr_offset": 147,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "String_ConvertFloatToExponential_FormatPrecision"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "String_ConvertFloatToExponential_FormatFlags"
            },
            "instr_offset": 3,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 80 3D ??",
          "match_offset": 0
        },
        "docs": "Formats value into scientific notation using the shared CRT float state, rounding digits and appending e/E+000.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 677,
          "symbol_index": 677,
          "accessor": "DTTR_PCDOGS_F_String_ConvertFloatToExponential",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_CONVERT_FLOAT_TO_EXPONENTIAL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_CONVERT_FLOAT_TO_EXPONENTIAL"
        }
      }
    },
    "String_ConvertFloatToExponential_CRTExponentSuffix": {
      "data": {
        "analysis": {
          "en": {
            "address": 4510240,
            "rva": 315936,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518464,
            "rva": 324160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518464,
            "rva": 324160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 147,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_ConvertFloatToExponential"
            },
            "instr_offset": 147,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 107,
          "symbol_index": 107,
          "accessor": "DTTR_PCDOGS_D_String_ConvertFloatToExponential_CRTExponentSuffix",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_CONVERT_FLOAT_TO_EXPONENTIAL_CRT_EXPONENT_SUFFIX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_CONVERT_FLOAT_TO_EXPONENTIAL_CRT_EXPONENT_SUFFIX"
        }
      }
    },
    "String_ConvertFloatToExponential_FormatFlags": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439320,
            "rva": 2245016,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 3,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449552,
            "rva": 2255248,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 3,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6448976,
            "rva": 2254672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 3,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_ConvertFloatToExponential"
            },
            "instr_offset": 3,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 731,
          "symbol_index": 731,
          "accessor": "DTTR_PCDOGS_D_String_ConvertFloatToExponential_FormatFlags",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_CONVERT_FLOAT_TO_EXPONENTIAL_FORMAT_FLAGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_CONVERT_FLOAT_TO_EXPONENTIAL_FORMAT_FLAGS"
        }
      }
    },
    "String_ConvertFloatToExponential_FormatPrecision": {
      "data": {
        "analysis": {
          "en": {
            "address": 6439316,
            "rva": 2245012,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6449548,
            "rva": 2255244,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6448972,
            "rva": 2254668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_ConvertFloatToExponential"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 730,
          "symbol_index": 730,
          "accessor": "DTTR_PCDOGS_D_String_ConvertFloatToExponential_FormatPrecision",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_CONVERT_FLOAT_TO_EXPONENTIAL_FORMAT_PRECISION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_CONVERT_FLOAT_TO_EXPONENTIAL_FORMAT_PRECISION"
        }
      }
    },
    "String_ConvertFloatToFixed": {
      "function": {
        "analysis": {
          "en": {
            "address": 4485563,
            "rva": 291259,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4493403,
            "rva": 299099,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4493179,
            "rva": 298875,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_InsertSpace"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixedWrapper"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "value",
              "type": "double*",
              "docs": "Input double to convert."
            },
            {
              "name": "buffer",
              "type": "char*",
              "docs": "Destination NUL-terminated output buffer."
            },
            {
              "name": "precision",
              "type": "int32_t",
              "docs": "Number of digits after the decimal point."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "80 3D ?? ?? ?? ?? 00 53 55",
          "match_offset": 0
        },
        "docs": "Formats value into fixed-point notation using the shared CRT float state and returns buffer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 678,
          "symbol_index": 678,
          "accessor": "DTTR_PCDOGS_F_String_ConvertFloatToFixed",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_CONVERT_FLOAT_TO_FIXED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_CONVERT_FLOAT_TO_FIXED"
        }
      }
    },
    "String_ConvertFloatToFixedWrapper": {
      "function": {
        "analysis": {
          "en": {
            "address": 4485979,
            "rva": 291675,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4493819,
            "rva": 299515,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4493595,
            "rva": 299291,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "value",
              "type": "double*",
              "docs": "Input double to convert."
            },
            {
              "name": "buffer",
              "type": "char*",
              "docs": "Destination NUL-terminated output buffer."
            },
            {
              "name": "precision",
              "type": "int32_t",
              "docs": "Number of digits after the decimal point."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "24 0C E8 ?? ?? ?? ?? 80",
          "match_offset": -17
        },
        "docs": "Sets the shared fixed-format flag, calls String_ConvertFloatToFixed, and returns buffer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 11,
          "entry_patch_size": 11
        },
        "sdk": {
          "id": 681,
          "symbol_index": 681,
          "accessor": "DTTR_PCDOGS_F_String_ConvertFloatToFixedWrapper",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_CONVERT_FLOAT_TO_FIXED_WRAPPER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_CONVERT_FLOAT_TO_FIXED_WRAPPER"
        }
      }
    },
    "String_FormatFloat": {
      "function": {
        "analysis": {
          "en": {
            "address": 4485049,
            "rva": 290745,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_FormatFloat_DecimalPointChar"
                },
                "instr_offset": 64,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4492889,
            "rva": 298585,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_FormatFloat_DecimalPointChar"
                },
                "instr_offset": 64,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4492665,
            "rva": 298361,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_FormatFloat_DecimalPointChar"
                },
                "instr_offset": 64,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "buffer",
              "type": "char*",
              "docs": "NUL-terminated float string buffer modified in place."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "String_FormatFloat_DecimalPointChar"
            },
            "instr_offset": 64,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "65 59 74 ?? 46 83 3D ??",
          "match_offset": -16
        },
        "docs": "CRT _forcdecpt-style helper: inserts the locale decimal-point character before the exponent/non-digit suffix by shifting the remainder right.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 676,
          "symbol_index": 676,
          "accessor": "DTTR_PCDOGS_F_String_FormatFloat",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_FORMAT_FLOAT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_FORMAT_FLOAT"
        }
      }
    },
    "String_FormatFloatScientific": {
      "function": {
        "analysis": {
          "en": {
            "address": 4485940,
            "rva": 291636,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4493780,
            "rva": 299476,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4493556,
            "rva": 299252,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "value",
              "type": "double*"
            },
            {
              "name": "buffer",
              "type": "char*"
            },
            {
              "name": "precision",
              "type": "int32_t"
            },
            {
              "name": "uppercase",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "24 10 E8 ?? ?? ?? ?? 80",
          "match_offset": -21
        },
        "docs": "Scientific-format helper that forwards value, buffer, precision, and uppercase selector into the CRT float conversion path.",
        "hook": {
          "kind": "rel32",
          "patch_size": 11,
          "entry_patch_size": 11
        },
        "sdk": {
          "id": 680,
          "symbol_index": 680,
          "accessor": "DTTR_PCDOGS_F_String_FormatFloatScientific",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_FORMAT_FLOAT_SCIENTIFIC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_FORMAT_FLOAT_SCIENTIFIC"
        }
      }
    },
    "String_FormatFloat_DecimalPointChar": {
      "data": {
        "analysis": {
          "en": {
            "address": 4544112,
            "rva": 349808,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_FormatFloat"
                },
                "instr_offset": 64,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4552448,
            "rva": 358144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_FormatFloat"
                },
                "instr_offset": 64,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4552432,
            "rva": 358128,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_FormatFloat"
                },
                "instr_offset": 64,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_FormatFloat"
            },
            "instr_offset": 64,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 322,
          "symbol_index": 322,
          "accessor": "DTTR_PCDOGS_D_String_FormatFloat_DecimalPointChar",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_FORMAT_FLOAT_DECIMAL_POINT_CHAR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_FORMAT_FLOAT_DECIMAL_POINT_CHAR"
        }
      }
    },
    "String_GetByIndex": {
      "function": {
        "analysis": {
          "en": {
            "address": 4470688,
            "rva": 276384,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_LocalizationLanguageID"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_NoString"
                },
                "instr_offset": 733,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_TableLoaded"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_TableSize"
                },
                "instr_offset": 97,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_TwoStrings"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetButtonString"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 787,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2861,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2998,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3183,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3339,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3780,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 34,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 220,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 253,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 319,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 407,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 421,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 480,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 513,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 546,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 609,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 652,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 941,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 996,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 1030,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 1063,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderDifficultySelection"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderDifficultySelection"
                },
                "instr_offset": 125,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 89,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 338,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 468,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 700,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 849,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 373,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 415,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 426,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 468,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 503,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 531,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 648,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 827,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 940,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsA"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsA"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 239,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 1419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 1933,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 2547,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_LocalizationLanguageID"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_NoString"
                },
                "instr_offset": 733,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_TableLoaded"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_TableSize"
                },
                "instr_offset": 97,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_TwoStrings"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4477840,
            "rva": 283536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_LocalizationLanguageID"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_NoString"
                },
                "instr_offset": 733,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_TableLoaded"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_TableSize"
                },
                "instr_offset": 97,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "String_GetByIndex_TwoStrings"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 2686,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 3607,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_FormatButtonName"
                },
                "instr_offset": 68,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_GetButtonString"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 380,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 469,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 771,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 853,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 1046,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 1266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 1345,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 1464,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 1638,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 1752,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 1934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 2025,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 2160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 2298,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 2371,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 787,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2861,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2998,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3183,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3339,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3780,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 723,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 792,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 970,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1060,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1256,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1280,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1294,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1343,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1414,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1446,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1478,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1510,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1539,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1582,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1665,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1737,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1827,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1919,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 1972,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 2005,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessOptionsInput"
                },
                "instr_offset": 2037,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 15,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderMusicSelection"
                },
                "instr_offset": 215,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderMusicSelection"
                },
                "instr_offset": 308,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 338,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 468,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 700,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 849,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 373,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 384,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 415,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 426,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 468,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 503,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 152,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 93,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 155,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 246,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1646,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "string_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "String_GetByIndex_NoString"
            },
            "instr_offset": 733,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "String_GetByIndex_TwoStrings"
            },
            "instr_offset": 428,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "String_GetByIndex_LocalizationLanguageID"
            },
            "instr_offset": 161,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "String_GetByIndex_TableLoaded"
            },
            "instr_offset": 124,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "String_GetByIndex_TableSize"
            },
            "instr_offset": 97,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "BA 09 04 00 00 8B 0D ??",
          "match_offset": -24
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 612,
          "symbol_index": 612,
          "accessor": "DTTR_PCDOGS_F_String_GetByIndex",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_GET_BY_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_GET_BY_INDEX"
        }
      }
    },
    "String_GetByIndex_LocalizationLanguageID": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506840,
            "rva": 2312536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 3296919552,
            "rva": 3292725248,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_GetByIndex"
            },
            "instr_offset": 161,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 775,
          "symbol_index": 775,
          "accessor": "DTTR_PCDOGS_D_String_GetByIndex_LocalizationLanguageID",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_GET_BY_INDEX_LOCALIZATION_LANGUAGE_ID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_GET_BY_INDEX_LOCALIZATION_LANGUAGE_ID"
        }
      }
    },
    "String_GetByIndex_NoString": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541140,
            "rva": 346836,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 733,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 733,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1354698496,
            "rva": 1350504192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 733,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_GetByIndex"
            },
            "instr_offset": 733,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 302,
          "symbol_index": 302,
          "accessor": "DTTR_PCDOGS_D_String_GetByIndex_NoString",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_GET_BY_INDEX_NO_STRING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_GET_BY_INDEX_NO_STRING"
        }
      }
    },
    "String_GetByIndex_TableLoaded": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506844,
            "rva": 2312540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 2190319228,
            "rva": 2186124924,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_GetByIndex"
            },
            "instr_offset": 124,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 776,
          "symbol_index": 776,
          "accessor": "DTTR_PCDOGS_D_String_GetByIndex_TableLoaded",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_GET_BY_INDEX_TABLE_LOADED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_GET_BY_INDEX_TABLE_LOADED"
        }
      }
    },
    "String_GetByIndex_TableSize": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506852,
            "rva": 2312548,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 97,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 97,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 227262723,
            "rva": 223068419,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 97,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_GetByIndex"
            },
            "instr_offset": 97,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 778,
          "symbol_index": 778,
          "accessor": "DTTR_PCDOGS_D_String_GetByIndex_TableSize",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_GET_BY_INDEX_TABLE_SIZE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_GET_BY_INDEX_TABLE_SIZE"
        }
      }
    },
    "String_GetByIndex_TwoStrings": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541152,
            "rva": 346848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 50357107,
            "rva": 46162803,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 428,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_GetByIndex"
            },
            "instr_offset": 428,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 303,
          "symbol_index": 303,
          "accessor": "DTTR_PCDOGS_D_String_GetByIndex_TwoStrings",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_GET_BY_INDEX_TWO_STRINGS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_GET_BY_INDEX_TWO_STRINGS"
        }
      }
    },
    "String_GetCharType": {
      "function": {
        "analysis": {
          "en": {
            "address": 4486132,
            "rva": 291828,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7924,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_FormatFloat"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6742,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6816,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4493972,
            "rva": 299668,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7924,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_FormatFloat"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6742,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6816,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4493748,
            "rva": 299444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeHeapBlock"
                },
                "instr_offset": 7924,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_FormatFloat"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6742,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_RoundFloatAndCopyDigits"
                },
                "instr_offset": 6816,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "ch",
              "type": "int32_t",
              "docs": "Character code; multibyte characters are handled as a packed low-word value."
            },
            {
              "name": "mask",
              "type": "int32_t",
              "docs": "CRT ctype mask to test."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "01 00 00 77 ?? 8B 0D ??",
          "match_offset": -13
        },
        "docs": "CRT _isctype-style helper: returns mask bits for ch using the ctype table or __crtGetStringTypeA for multibyte characters.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 683,
          "symbol_index": 683,
          "accessor": "DTTR_PCDOGS_F_String_GetCharType",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_GET_CHAR_TYPE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_GET_CHAR_TYPE"
        }
      }
    },
    "String_InsertSpace": {
      "function": {
        "analysis": {
          "en": {
            "address": 4486095,
            "rva": 291791,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4493935,
            "rva": 299631,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4493711,
            "rva": 299407,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 131,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 153,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "buffer",
              "type": "char*",
              "docs": "NUL-terminated string whose tail is shifted right in place."
            },
            {
              "name": "insert_count",
              "type": "int32_t",
              "docs": "Number of bytes to make room for at buffer; zero leaves the string unchanged."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 0C 56 E8 ??",
          "match_offset": -9
        },
        "docs": "Shifts the NUL-terminated string right by insertCount bytes using a backward memmove.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 682,
          "symbol_index": 682,
          "accessor": "DTTR_PCDOGS_F_String_InsertSpace",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_INSERT_SPACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_INSERT_SPACE"
        }
      }
    },
    "String_InstallLocaleOverlay": {
      "function": {
        "analysis": {
          "eu": {
            "address": 4357904,
            "rva": 163600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4357904,
            "rva": 163600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 175,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 304,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 236,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_SetTable"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_SetTable"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "locale_data",
              "type": "void*",
              "docs": "Locale payload copied over the loaded overlay resource blob."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 53 56 8B 74 24 0C 8B 41 08 57 03 C1 8B 08 8D 50 04 8B D9 8B FA C1 E9 02 F3 A5 8B CB 83 E1 03 F3 A4",
          "match_offset": 0
        },
        "docs": "Copies the supplied locale payload into the loaded overlay resource at the blob's stored offset and installs the localized string table that follows the copied block.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 328,
          "symbol_index": 328,
          "accessor": "DTTR_PCDOGS_F_String_InstallLocaleOverlay",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_INSTALL_LOCALE_OVERLAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_INSTALL_LOCALE_OVERLAY"
        }
      }
    },
    "String_LoadFloatFPU": {
      "function": {
        "analysis": {
          "en": {
            "address": 4485008,
            "rva": 290704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_LoadFloatFPU_CRTKernel32"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Movie_ShutdownVideoSystem"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4492848,
            "rva": 298544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_LoadFloatFPU_CRTKernel32"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Movie_ShutdownVideoSystem"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4492624,
            "rva": 298320,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_LoadFloatFPU_CRTKernel32"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Movie_ShutdownVideoSystem"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "String_LoadFloatFPU_CRTKernel32"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "68 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? 85 C0 74",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 675,
          "symbol_index": 675,
          "accessor": "DTTR_PCDOGS_F_String_LoadFloatFPU",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_LOAD_FLOAT_FPU",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_LOAD_FLOAT_FPU"
        }
      }
    },
    "String_LoadFloatFPU_CRTKernel32": {
      "data": {
        "analysis": {
          "en": {
            "address": 4510220,
            "rva": 315916,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_LoadFloatFPU"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518444,
            "rva": 324140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_LoadFloatFPU"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518444,
            "rva": 324140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_LoadFloatFPU"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_LoadFloatFPU"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 106,
          "symbol_index": 106,
          "accessor": "DTTR_PCDOGS_D_String_LoadFloatFPU_CRTKernel32",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_LOAD_FLOAT_FPU_CRT_KERNEL32",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_LOAD_FLOAT_FPU_CRT_KERNEL32"
        }
      }
    },
    "String_ParseAtoi": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480986,
            "rva": 286682,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "CRT_CaptureNLGNotifyContext"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushToDisk"
                },
                "instr_offset": 432,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_ProbeCRTRead4"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488826,
            "rva": 294522,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "CRT_CaptureNLGNotifyContext"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushToDisk"
                },
                "instr_offset": 432,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_ProbeCRTRead4"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488602,
            "rva": 294298,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "CRT_CaptureNLGNotifyContext"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushBuffer"
                },
                "instr_offset": 408,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_FlushToDisk"
                },
                "instr_offset": 432,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "File_WriteChar"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_ProbeCRTRead4"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "text",
              "type": "char const*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 74 24 04 E8 ?? ?? ?? ?? 59 C3",
          "match_offset": 0
        },
        "docs": "Thin atoi wrapper around String_ParseInt.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 665,
          "symbol_index": 665,
          "accessor": "DTTR_PCDOGS_F_String_ParseAtoi",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_PARSE_ATOI",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_PARSE_ATOI"
        }
      }
    },
    "String_ParseInt": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480847,
            "rva": 286543,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_ParseInt_CharTypeTable"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488687,
            "rva": 294383,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_ParseInt_CharTypeTable"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488463,
            "rva": 294159,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_ParseInt_CharTypeTable"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "text",
              "type": "char const*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "String_ParseInt_CharTypeTable"
            },
            "instr_offset": 35,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 55 56 57 8B 7C 24 14 83 3D ?? ?? ?? ?? 01 7E",
          "match_offset": 0
        },
        "docs": "CRT atol-style signed decimal parser for a NUL-terminated text string.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 664,
          "symbol_index": 664,
          "accessor": "DTTR_PCDOGS_F_String_ParseInt",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_PARSE_INT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_PARSE_INT"
        }
      }
    },
    "String_ParseInt_CharTypeTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4543584,
            "rva": 349280,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4551920,
            "rva": 357616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4551904,
            "rva": 357600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ParseInt"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_ParseInt"
            },
            "instr_offset": 35,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 321,
          "symbol_index": 321,
          "accessor": "DTTR_PCDOGS_D_String_ParseInt_CharTypeTable",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_PARSE_INT_CHAR_TYPE_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_PARSE_INT_CHAR_TYPE_TABLE"
        }
      }
    },
    "String_RoundFloatAndCopyDigits": {
      "function": {
        "analysis": {
          "en": {
            "address": 4499952,
            "rva": 305648,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 3455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 2327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6742,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6816,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4507792,
            "rva": 313488,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 3455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 2327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6742,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6816,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4507568,
            "rva": 313264,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "File_CloseHandle"
                },
                "instr_offset": 3455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 1816,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Mem_MallocCRT"
                },
                "instr_offset": 2327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ConvertFloatToDecimalString"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6409,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6506,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6742,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetCharType"
                },
                "instr_offset": 6816,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatGeneral"
                },
                "instr_offset": 55,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToExponential"
                },
                "instr_offset": 101,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_ConvertFloatToFixed"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char*",
          "params": [
            {
              "name": "out_digits",
              "type": "char*",
              "docs": "Destination digit buffer; initialized with a leading '0'."
            },
            {
              "name": "digit_count",
              "type": "int32_t",
              "docs": "Number of digits to copy and round from the CRT float state."
            },
            {
              "name": "float_state",
              "type": "void*",
              "docs": "CRT float conversion state. The digit pointer is adjusted when rounding carries."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "10 40 FF 4D 08 75 ?? ??",
          "match_offset": -51
        },
        "docs": "Copies digit_count decimal digits from the CRT float state, rounds on the next digit, shifts away the leading guard zero, and bumps the decimal exponent on carry.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 697,
          "symbol_index": 697,
          "accessor": "DTTR_PCDOGS_F_String_RoundFloatAndCopyDigits",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_ROUND_FLOAT_AND_COPY_DIGITS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_ROUND_FLOAT_AND_COPY_DIGITS"
        }
      }
    },
    "String_SetTable": {
      "function": {
        "analysis": {
          "en": {
            "address": 4470672,
            "rva": 276368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_SetTable_Table"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Shared_LoadCommonResources"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_SetTable_Table"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4477824,
            "rva": 283520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "String_SetTable_Table"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 46,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "String_InstallLocaleOverlay"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "string_table",
              "type": "void*",
              "docs": "Base pointer to the loaded string table block used by String_GetByIndex."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "String_SetTable_Table"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 A3 ?? ?? ?? ?? C3 90 90 90 90 90 90 8B 54",
          "match_offset": 0
        },
        "docs": "Stores the active string table pointer and returns the same pointer.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 611,
          "symbol_index": 611,
          "accessor": "DTTR_PCDOGS_F_String_SetTable",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_STRING_SET_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_STRING_SET_TABLE"
        }
      }
    },
    "String_SetTable_Table": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838084,
            "rva": 643780,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_SetTable"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_SetTable"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4847740,
            "rva": 653436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "String_SetTable"
                },
                "instr_offset": 4,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "String_SetTable"
            },
            "instr_offset": 4,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int16_t*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "String_SetTable",
          "instr_offset": 4,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Active package/localization string table pointer consumed by String_GetByIndex; split from input button-name buffers.",
        "sdk": {
          "id": 711,
          "symbol_index": 711,
          "accessor": "DTTR_PCDOGS_D_String_SetTable_Table",
          "sdk_id": "DTTR_PCDOGS_DATA_STRING_SET_TABLE_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_STRING_SET_TABLE_TABLE"
        }
      }
    },
    "Submesh_Entry": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "type",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 1,
            "doc": null
          },
          {
            "type": "char",
            "name": "bone_index",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "pad_03",
            "offset": 3,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "vert_start_index",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "vert_count",
            "offset": 6,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "poly_start_index",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "poly_count",
            "offset": 10,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "unknown_0c",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "effect_count",
            "offset": 14,
            "doc": null
          },
          {
            "type": "Math_Vec2I16",
            "name": "scale",
            "offset": 16,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Skinned mesh-piece descriptor selecting vertex and polygon index ranges; consumed by Bone_BlendVerticesMultiWeight and Bone_ComputeNormalsPostTransform.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Submesh_Entry"
        }
      }
    },
    "Submesh_RenderSpan": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "unk_00",
            "offset": 0,
            "doc": null
          },
          {
            "type": "char",
            "name": "render_node_entry_index",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "unk_03",
            "offset": 3,
            "doc": null
          },
          {
            "type": "uint32_t",
            "name": "unk_04",
            "offset": 4,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "polygon_ref_start_index",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "polygon_ref_count",
            "offset": 10,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "weighted_vertex_start_index",
            "offset": 12,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "weighted_vertex_count",
            "offset": 14,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "cached_offset_10",
            "offset": 16,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "cached_offset_12",
            "offset": 18,
            "doc": null
          }
        ],
        "size": 20,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Submesh render span selecting polygon-ref and weighted-vertex ranges; consumed by Scene_RenderSubMesh and Bone_TransformWeightedVerticesForRender.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Submesh_RenderSpan"
        }
      }
    },
    "Timer_GetElapsedTickCount": {
      "function": {
        "analysis": {
          "en": {
            "address": 4476864,
            "rva": 282560,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Timer_GetElapsedTickCount_GameStartTime"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ResetState"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484704,
            "rva": 290400,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Timer_GetElapsedTickCount_GameStartTime"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ResetState"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484480,
            "rva": 290176,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Timer_GetElapsedTickCount_GameStartTime"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ResetState"
                },
                "instr_offset": 38,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Timer_GetElapsedTickCount_GameStartTime"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 56 8B 35 ?? ?? ?? ?? 83",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 631,
          "symbol_index": 631,
          "accessor": "DTTR_PCDOGS_F_Timer_GetElapsedTickCount",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TIMER_GET_ELAPSED_TICK_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TIMER_GET_ELAPSED_TICK_COUNT"
        }
      }
    },
    "Timer_GetElapsedTickCountThunk": {
      "function": {
        "analysis": {
          "en": {
            "address": 4217920,
            "rva": 23616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_ExecuteBehaviorScript"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4218368,
            "rva": 24064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_ExecuteBehaviorScript"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4218368,
            "rva": 24064,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Entity_SpawnActor"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_ExecuteBehaviorScript"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E9 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 55",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 68,
          "symbol_index": 68,
          "accessor": "DTTR_PCDOGS_F_Timer_GetElapsedTickCountThunk",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TIMER_GET_ELAPSED_TICK_COUNT_THUNK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TIMER_GET_ELAPSED_TICK_COUNT_THUNK"
        }
      },
      "signature": {
        "analysis": {
          "en": {
            "address": 4217920,
            "rva": 23616,
            "image_base": 4194304
          },
          "eu": {
            "address": 4218368,
            "rva": 24064,
            "image_base": 4194304
          },
          "sc": {
            "address": 4218368,
            "rva": 24064,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "E9 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 55"
      }
    },
    "Timer_GetElapsedTickCount_GameStartTime": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541672,
            "rva": 347368,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4550008,
            "rva": 355704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549984,
            "rva": 355680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Timer_GetElapsedTickCount"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Timer_GetElapsedTickCount"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 318,
          "symbol_index": 318,
          "accessor": "DTTR_PCDOGS_D_Timer_GetElapsedTickCount_GameStartTime",
          "sdk_id": "DTTR_PCDOGS_DATA_TIMER_GET_ELAPSED_TICK_COUNT_GAME_START_TIME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TIMER_GET_ELAPSED_TICK_COUNT_GAME_START_TIME"
        }
      }
    },
    "Timer_GetGameTime": {
      "function": {
        "analysis": {
          "en": {
            "address": 4443888,
            "rva": 249584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Timer_GetGameTime_MsToSec"
                },
                "instr_offset": 25,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4449136,
            "rva": 254832,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Timer_GetGameTime_MsToSec"
                },
                "instr_offset": 25,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4449104,
            "rva": 254800,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Timer_GetGameTime_MsToSec"
                },
                "instr_offset": 25,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "long double",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Timer_GetGameTime_MsToSec"
            },
            "instr_offset": 25,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 08 FF 15 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 510,
          "symbol_index": 510,
          "accessor": "DTTR_PCDOGS_F_Timer_GetGameTime",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TIMER_GET_GAME_TIME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TIMER_GET_GAME_TIME"
        }
      }
    },
    "Timer_GetGameTime_MsToSec": {
      "data": {
        "analysis": {
          "en": {
            "address": 4509796,
            "rva": 315492,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Timer_GetGameTime"
                },
                "instr_offset": 25,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4518024,
            "rva": 323720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Timer_GetGameTime"
                },
                "instr_offset": 25,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4518024,
            "rva": 323720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Timer_GetGameTime"
                },
                "instr_offset": 25,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Timer_GetGameTime"
            },
            "instr_offset": 25,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 90,
          "symbol_index": 90,
          "accessor": "DTTR_PCDOGS_D_Timer_GetGameTime_MsToSec",
          "sdk_id": "DTTR_PCDOGS_DATA_TIMER_GET_GAME_TIME_MS_TO_SEC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TIMER_GET_GAME_TIME_MS_TO_SEC"
        }
      }
    },
    "Title_CleanupScreenResources": {
      "function": {
        "analysis": {
          "en": {
            "address": 4472432,
            "rva": 278128,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitleBonusReplayResource"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitleMaterialBase"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitlePackage"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle0"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle1"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceHandle"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceHandle"
                },
                "instr_offset": 42,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4480128,
            "rva": 285824,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitleBonusReplayResource"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitleMaterialBase"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitlePackage"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle0"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle1"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 447,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 476,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 653,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 530,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 716,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1015,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 1570,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 849,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 947,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 1089,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 1209,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 1330,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 1444,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 1698,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4479904,
            "rva": 285600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitleBonusReplayResource"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitleMaterialBase"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "PKG_ResourceTitlePackage"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle0"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_ResourceHandle1"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 118,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 447,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 476,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StopMusicAndPause"
                },
                "instr_offset": 7,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_UpdateSoundChannels"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 653,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 530,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 716,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1015,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1143,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 1570,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 766,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 849,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 947,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 1089,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 1209,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 1330,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 1444,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceData"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_ReleaseResourceManager"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1646,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 1698,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 65,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "PKG_ResourceTitleBonusReplayResource"
            },
            "instr_offset": 12,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Title_ResourceHandle1"
            },
            "instr_offset": 23,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Title_ResourceHandle0"
            },
            "instr_offset": 35,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_ResourceTitleMaterialBase"
            },
            "instr_offset": 47,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "PKG_ResourceTitlePackage"
            },
            "instr_offset": 58,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF FF E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 50 E8",
          "match_offset": -5
        },
        "docs": "Releases title-screen package resources, material pointers, and related resource handles.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 24,
          "symbol_index": 24,
          "accessor": "DTTR_PCDOGS_F_Title_CleanupScreenResources",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TITLE_CLEANUP_SCREEN_RESOURCES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TITLE_CLEANUP_SCREEN_RESOURCES"
        }
      }
    },
    "Title_InitializeSpots": {
      "function": {
        "analysis": {
          "en": {
            "address": 4471440,
            "rva": 277136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_ActiveCount"
                },
                "instr_offset": 14,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_CycleLength"
                },
                "instr_offset": 422,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_DataArray"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_FrameCounter"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_MaterialIndex"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_TimerArray"
                },
                "instr_offset": 338,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4479120,
            "rva": 284816,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_ActiveCount"
                },
                "instr_offset": 14,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_CycleLength"
                },
                "instr_offset": 422,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_DataArray"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_FrameCounter"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_MaterialIndex"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_TimerArray"
                },
                "instr_offset": 338,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4478896,
            "rva": 284592,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_ActiveCount"
                },
                "instr_offset": 14,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_CycleLength"
                },
                "instr_offset": 422,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_DataArray"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_FrameCounter"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_MaterialIndex"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_InitializeSpots_TimerArray"
                },
                "instr_offset": 338,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 204,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 260,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 327,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 357,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 367,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 271,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 273,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "effect_data",
              "type": "void*"
            }
          ],
          "calling_convention": "fastcall",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Title_InitializeSpots_ActiveCount"
            },
            "instr_offset": 14,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Title_InitializeSpots_CycleLength"
            },
            "instr_offset": 422,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Title_InitializeSpots_MaterialIndex"
            },
            "instr_offset": 63,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Title_InitializeSpots_DataArray"
            },
            "instr_offset": 23,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Title_InitializeSpots_TimerArray"
            },
            "instr_offset": 338,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Title_InitializeSpots_FrameCounter"
            },
            "instr_offset": 7,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 53 55 56 33 DB 57 66 89 1D ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 613,
          "symbol_index": 613,
          "accessor": "DTTR_PCDOGS_F_Title_InitializeSpots",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TITLE_INITIALIZE_SPOTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TITLE_INITIALIZE_SPOTS"
        }
      }
    },
    "Title_InitializeSpots_ActiveCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838600,
            "rva": 644296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 14,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848832,
            "rva": 654528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 14,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848256,
            "rva": 653952,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 14,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_InitializeSpots"
            },
            "instr_offset": 14,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 713,
          "symbol_index": 713,
          "accessor": "DTTR_PCDOGS_D_Title_InitializeSpots_ActiveCount",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_INITIALIZE_SPOTS_ACTIVE_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_INITIALIZE_SPOTS_ACTIVE_COUNT"
        }
      }
    },
    "Title_InitializeSpots_CycleLength": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838616,
            "rva": 644312,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 422,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848848,
            "rva": 654544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 422,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848272,
            "rva": 653968,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 422,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_InitializeSpots"
            },
            "instr_offset": 422,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 715,
          "symbol_index": 715,
          "accessor": "DTTR_PCDOGS_D_Title_InitializeSpots_CycleLength",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_INITIALIZE_SPOTS_CYCLE_LENGTH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_INITIALIZE_SPOTS_CYCLE_LENGTH"
        }
      }
    },
    "Title_InitializeSpots_DataArray": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838632,
            "rva": 644328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848864,
            "rva": 654560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848288,
            "rva": 653984,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_InitializeSpots"
            },
            "instr_offset": 23,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 719,
          "symbol_index": 719,
          "accessor": "DTTR_PCDOGS_D_Title_InitializeSpots_DataArray",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_INITIALIZE_SPOTS_DATA_ARRAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_INITIALIZE_SPOTS_DATA_ARRAY"
        }
      }
    },
    "Title_InitializeSpots_FrameCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838944,
            "rva": 644640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4849176,
            "rva": 654872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848600,
            "rva": 654296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_InitializeSpots"
            },
            "instr_offset": 7,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 723,
          "symbol_index": 723,
          "accessor": "DTTR_PCDOGS_D_Title_InitializeSpots_FrameCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_INITIALIZE_SPOTS_FRAME_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_INITIALIZE_SPOTS_FRAME_COUNTER"
        }
      }
    },
    "Title_InitializeSpots_MaterialIndex": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838620,
            "rva": 644316,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848852,
            "rva": 654548,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848276,
            "rva": 653972,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_InitializeSpots"
            },
            "instr_offset": 63,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 717,
          "symbol_index": 717,
          "accessor": "DTTR_PCDOGS_D_Title_InitializeSpots_MaterialIndex",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_INITIALIZE_SPOTS_MATERIAL_INDEX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_INITIALIZE_SPOTS_MATERIAL_INDEX"
        }
      }
    },
    "Title_InitializeSpots_TimerArray": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838640,
            "rva": 644336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 338,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4848872,
            "rva": 654568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 338,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848296,
            "rva": 653992,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 338,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_InitializeSpots"
            },
            "instr_offset": 338,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 720,
          "symbol_index": 720,
          "accessor": "DTTR_PCDOGS_D_Title_InitializeSpots_TimerArray",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_INITIALIZE_SPOTS_TIMER_ARRAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_INITIALIZE_SPOTS_TIMER_ARRAY"
        }
      }
    },
    "Title_ResourceCleanupBundle": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4472432,
            "rva": 278128,
            "image_base": 4194304
          },
          "eu": {
            "address": 4480128,
            "rva": 285824,
            "image_base": 4194304
          },
          "sc": {
            "address": 4479904,
            "rva": 285600,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "6A 01 E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 8B 0D ?? ?? ?? ?? 51 E8 ?? ?? ?? ?? 8B 15 ?? ?? ?? ?? 52 E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 8B 0D ?? ?? ?? ?? 51 E8 ?? ??"
      }
    },
    "Title_ResourceHandle0": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838932,
            "rva": 644628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4849164,
            "rva": 654860,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848588,
            "rva": 654284,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 35,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_CleanupScreenResources"
            },
            "instr_offset": 35,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "PKG_LoadTitleScreenResources"
            },
            "instr_offset": 12,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Title_CleanupScreenResources",
          "instr_offset": 35,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Title-screen resource handle slot 0 cleaned by PKG_CleanupResourceHandle during Title_CleanupScreenResources and loaded by PKG_LoadTitleScreenResources.",
        "sdk": {
          "id": 12,
          "symbol_index": 12,
          "accessor": "DTTR_PCDOGS_D_Title_ResourceHandle0",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_RESOURCE_HANDLE0",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_RESOURCE_HANDLE0"
        }
      }
    },
    "Title_ResourceHandle1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838928,
            "rva": 644624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4849160,
            "rva": 654856,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848584,
            "rva": 654280,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 23,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_CleanupScreenResources"
            },
            "instr_offset": 23,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "PKG_LoadTitleScreenResources"
            },
            "instr_offset": 36,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Title_CleanupScreenResources",
          "instr_offset": 23,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Title-screen resource handle slot 1 cleaned by PKG_CleanupResourceHandle during Title_CleanupScreenResources and loaded by PKG_LoadTitleScreenResources.",
        "sdk": {
          "id": 11,
          "symbol_index": 11,
          "accessor": "DTTR_PCDOGS_D_Title_ResourceHandle1",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_RESOURCE_HANDLE1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_RESOURCE_HANDLE1"
        }
      }
    },
    "Title_SoundDefTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838940,
            "rva": 644636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4849172,
            "rva": 654868,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4848596,
            "rva": 654292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_UpdateSpots"
            },
            "instr_offset": 92,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "Audio_SoundDefinition*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Title_UpdateSpots",
          "instr_offset": 92,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "unknown",
        "docs": "Pointer to the title-screen sound-definition table; Title_UpdateSpots passes it to Audio_PlaySound3D for spot animations.",
        "sdk": {
          "id": 722,
          "symbol_index": 722,
          "accessor": "DTTR_PCDOGS_D_Title_SoundDefTable",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_SOUND_DEF_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_SOUND_DEF_TABLE"
        }
      }
    },
    "Title_SpotEntry": {
      "type": {
        "members": [
          {
            "type": "int16_t",
            "name": "x",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "y",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "flags",
            "offset": 4,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "state",
            "offset": 5,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "material_index",
            "offset": 6,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "frame_index",
            "offset": 7,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "timer",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "reserved_0a",
            "offset": 10,
            "doc": null
          }
        ],
        "size": 12,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Title spot record with coordinate, state, material, and frame fields.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Title_SpotEntry"
        }
      }
    },
    "Title_UpdateAndRenderScreen": {
      "function": {
        "analysis": {
          "en": {
            "address": 4472512,
            "rva": 278208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_Counter"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_FadeLevel"
                },
                "instr_offset": 168,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_State"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_StateDispatchTable"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_InitializeLevelAudio"
                },
                "instr_offset": 39,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 358,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_StartMusicWithFade"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_ApplySettings"
                },
                "instr_offset": 62,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_ClearViewport"
                },
                "instr_offset": 559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_BeginRendering"
                },
                "instr_offset": 440,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ClearScreenAndRenderRectangle"
                },
                "instr_offset": 620,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 448,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 1353,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_EndRendering"
                },
                "instr_offset": 1479,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_IncrementPassCounter"
                },
                "instr_offset": 419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 774,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 900,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1040,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1159,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1319,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetFadeLevel"
                },
                "instr_offset": 1345,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressedAsync"
                },
                "instr_offset": 278,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 709,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 854,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 988,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 1117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 1221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 105,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadTitleScreenResources"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_LoadBonusReplay"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 591,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 189,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_UpdateSpots"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderText"
                },
                "instr_offset": 1471,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_Load"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_Counter"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_FadeLevel"
                },
                "instr_offset": 168,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_State"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_StateDispatchTable"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_Counter"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_FadeLevel"
                },
                "instr_offset": 168,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_State"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Title_UpdateAndRenderScreen_StateDispatchTable"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "sprite",
              "type": "Graphics_SpriteContext*",
              "docs": "Sprite context slot; normal update callers pass nullptr and (Graphics_SpriteContext*)-1 forces the title-screen shutdown/reset path."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Title_UpdateAndRenderScreen_StateDispatchTable"
            },
            "instr_offset": 32,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Title_UpdateAndRenderScreen_Counter"
            },
            "instr_offset": 130,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Title_UpdateAndRenderScreen_FadeLevel"
            },
            "instr_offset": 168,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Title_UpdateAndRenderScreen_State"
            },
            "instr_offset": 16,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 53 33 DB 83 F8 FF 0F 84 ??",
          "match_offset": 0
        },
        "docs": "Advances the title-screen state machine, draws title sprites/text/title spots, and returns nonzero while the title screen remains active.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 615,
          "symbol_index": 615,
          "accessor": "DTTR_PCDOGS_F_Title_UpdateAndRenderScreen",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TITLE_UPDATE_AND_RENDER_SCREEN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TITLE_UPDATE_AND_RENDER_SCREEN"
        }
      }
    },
    "Title_UpdateAndRenderScreen_Counter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838618,
            "rva": 644314,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 130,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_UpdateAndRenderScreen"
            },
            "instr_offset": 130,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 716,
          "symbol_index": 716,
          "accessor": "DTTR_PCDOGS_D_Title_UpdateAndRenderScreen_Counter",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_UPDATE_AND_RENDER_SCREEN_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_UPDATE_AND_RENDER_SCREEN_COUNTER"
        }
      }
    },
    "Title_UpdateAndRenderScreen_FadeLevel": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838628,
            "rva": 644324,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 168,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 168,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 168,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_UpdateAndRenderScreen"
            },
            "instr_offset": 168,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 718,
          "symbol_index": 718,
          "accessor": "DTTR_PCDOGS_D_Title_UpdateAndRenderScreen_FadeLevel",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_UPDATE_AND_RENDER_SCREEN_FADE_LEVEL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_UPDATE_AND_RENDER_SCREEN_FADE_LEVEL"
        }
      }
    },
    "Title_UpdateAndRenderScreen_State": {
      "data": {
        "analysis": {
          "en": {
            "address": 4838924,
            "rva": 644620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 16,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_UpdateAndRenderScreen"
            },
            "instr_offset": 16,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 721,
          "symbol_index": 721,
          "accessor": "DTTR_PCDOGS_D_Title_UpdateAndRenderScreen_State",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_UPDATE_AND_RENDER_SCREEN_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_UPDATE_AND_RENDER_SCREEN_STATE"
        }
      }
    },
    "Title_UpdateAndRenderScreen_StateDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4474000,
            "rva": 279696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 32,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Title_UpdateAndRenderScreen"
            },
            "instr_offset": 32,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Title_UpdateAndRenderScreen",
          "instr_offset": 32,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Seven-entry uint32_t jump table used by Title_UpdateAndRenderScreen for title-screen state values 0..6.",
        "sdk": {
          "id": 66,
          "symbol_index": 66,
          "accessor": "DTTR_PCDOGS_D_Title_UpdateAndRenderScreen_StateDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_TITLE_UPDATE_AND_RENDER_SCREEN_STATE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TITLE_UPDATE_AND_RENDER_SCREEN_STATE_DISPATCH_TABLE"
        }
      }
    },
    "Title_UpdateSpots": {
      "function": {
        "analysis": {
          "en": {
            "address": 4471888,
            "rva": 277584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Title_SoundDefTable"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 441,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 645,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4479568,
            "rva": 285264,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Title_SoundDefTable"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 505,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 469,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 430,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 374,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 352,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 441,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4479344,
            "rva": 285040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Title_SoundDefTable"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_PlaySoundDefinition3D"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_ResolveSoundDefAliases"
                },
                "instr_offset": 544,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_BuildTextureArray"
                },
                "instr_offset": 502,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 245,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_LoadAndFixup"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntry"
                },
                "instr_offset": 429,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 363,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_LoadEntryAlloc"
                },
                "instr_offset": 395,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 385,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Settings_GetLanguage"
                },
                "instr_offset": 419,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Title_InitializeSpots"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 160,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateWorldSelectMenu"
                },
                "instr_offset": 441,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 741,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "effect_state",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Title_SoundDefTable"
            },
            "instr_offset": 92,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "53 55 8B 6C 24 0C 85 ED 75 ?? 66 A1 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 614,
          "symbol_index": 614,
          "accessor": "DTTR_PCDOGS_F_Title_UpdateSpots",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TITLE_UPDATE_SPOTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TITLE_UPDATE_SPOTS"
        }
      }
    },
    "Trail_BoneEffect": {
      "type": {
        "members": [
          {
            "type": "uint32_t",
            "name": "spawn_frame",
            "offset": 0,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "waypoint_index",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Math_Vec3I32",
            "name": "pos",
            "offset": 8,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "offset_x",
            "offset": 20,
            "doc": null
          },
          {
            "type": "int32_t",
            "name": "offset_z",
            "offset": 24,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "rotation",
            "offset": 28,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "scale",
            "offset": 30,
            "doc": null
          }
        ],
        "size": 32,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Trail_BoneEffect"
        }
      }
    },
    "Trail_CheckBoneAvailable": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425744,
            "rva": 231440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_CheckBoneAvailable_Timer"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_UpdateAnimationState"
                },
                "instr_offset": 787,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 211,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4473367,
            "rva": 279063,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_CheckBoneAvailable_Timer"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4473303,
            "rva": 278999,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_CheckBoneAvailable_Timer"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Trail_CheckBoneAvailable_Timer"
            },
            "instr_offset": 19,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 8B 88 84",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 472,
          "symbol_index": 472,
          "accessor": "DTTR_PCDOGS_F_Trail_CheckBoneAvailable",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TRAIL_CHECK_BONE_AVAILABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TRAIL_CHECK_BONE_AVAILABLE"
        }
      }
    },
    "Trail_CheckBoneAvailable_Timer": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832956,
            "rva": 638652,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_CheckBoneAvailable"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1976908752,
            "rva": 1972714448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_CheckBoneAvailable"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1976908752,
            "rva": 1972714448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_CheckBoneAvailable"
                },
                "instr_offset": 19,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_CheckBoneAvailable"
            },
            "instr_offset": 19,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 657,
          "symbol_index": 657,
          "accessor": "DTTR_PCDOGS_D_Trail_CheckBoneAvailable_Timer",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_CHECK_BONE_AVAILABLE_TIMER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_CHECK_BONE_AVAILABLE_TIMER"
        }
      }
    },
    "Trail_Entry": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "spawn_interval",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "data_type",
            "offset": 2,
            "doc": null
          },
          {
            "type": "void*",
            "name": "data_ptr",
            "offset": 4,
            "doc": null
          }
        ],
        "size": 8,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Trail_Entry"
        }
      }
    },
    "Trail_FindBonePath": {
      "function": {
        "analysis": {
          "en": {
            "address": 4428576,
            "rva": 234272,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_BufferX2"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_BufferY2"
                },
                "instr_offset": 1881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_BufferZ2"
                },
                "instr_offset": 1888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_End"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 916,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1146,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_CalculatePolygonCenter"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1284,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_CreateMap"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 1719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 1290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 1710,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 1224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 1296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 674,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 1164,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4433648,
            "rva": 239344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_BufferX2"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_BufferY2"
                },
                "instr_offset": 1881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_BufferZ2"
                },
                "instr_offset": 1888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_End"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 916,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1146,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_CalculatePolygonCenter"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1284,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_CreateMap"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 1719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 1290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 1710,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 1224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 1296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 674,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 1164,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4433616,
            "rva": 239312,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_BufferX2"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_BufferY2"
                },
                "instr_offset": 1881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_BufferZ2"
                },
                "instr_offset": 1888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_FindBonePath_End"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 916,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1146,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1991,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Model_ResolveCollision"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_CalculatePolygonCenter"
                },
                "instr_offset": 276,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1284,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Physics_CalculateMovementWithCollision"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_CreateMap"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 1719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 1290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 1710,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 1224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 1296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 674,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 1164,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "start_pos",
              "type": "Math_Vec3I32*",
              "docs": "Starting world position used to seed the bone-trail path search."
            },
            {
              "name": "nav_network",
              "type": "Nav_Network*",
              "docs": "Navigation network whose nodes and neighbor lists are searched."
            },
            {
              "name": "skip_dynamic_targets",
              "type": "int32_t",
              "docs": "Nonzero skips type 4/5 dynamic target refs while expanding path nodes."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Trail_FindBonePath_End"
            },
            "instr_offset": 607,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_FindBonePath_BufferX2"
            },
            "instr_offset": 154,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_FindBonePath_BufferY2"
            },
            "instr_offset": 1881,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_FindBonePath_BufferZ2"
            },
            "instr_offset": 1888,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 81 EC 60 01 00 00 A1 ??",
          "match_offset": 0
        },
        "docs": "Builds a path through the navigation network from startPos and returns the number of path points.",
        "hook": {
          "kind": "rel32",
          "patch_size": 9,
          "entry_patch_size": 9
        },
        "sdk": {
          "id": 475,
          "symbol_index": 475,
          "accessor": "DTTR_PCDOGS_F_Trail_FindBonePath",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TRAIL_FIND_BONE_PATH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TRAIL_FIND_BONE_PATH"
        }
      }
    },
    "Trail_FindBonePath_BufferX2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4833144,
            "rva": 638840,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4842040,
            "rva": 647736,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4842024,
            "rva": 647720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 154,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_FindBonePath"
            },
            "instr_offset": 154,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 667,
          "symbol_index": 667,
          "accessor": "DTTR_PCDOGS_D_Trail_FindBonePath_BufferX2",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_FIND_BONE_PATH_BUFFER_X2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_FIND_BONE_PATH_BUFFER_X2"
        }
      }
    },
    "Trail_FindBonePath_BufferY2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4833148,
            "rva": 638844,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4842044,
            "rva": 647740,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4842028,
            "rva": 647724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1881,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_FindBonePath"
            },
            "instr_offset": 1881,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 668,
          "symbol_index": 668,
          "accessor": "DTTR_PCDOGS_D_Trail_FindBonePath_BufferY2",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_FIND_BONE_PATH_BUFFER_Y2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_FIND_BONE_PATH_BUFFER_Y2"
        }
      }
    },
    "Trail_FindBonePath_BufferZ2": {
      "data": {
        "analysis": {
          "en": {
            "address": 4833152,
            "rva": 638848,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4842048,
            "rva": 647744,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4842032,
            "rva": 647728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1888,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_FindBonePath"
            },
            "instr_offset": 1888,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 669,
          "symbol_index": 669,
          "accessor": "DTTR_PCDOGS_D_Trail_FindBonePath_BufferZ2",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_FIND_BONE_PATH_BUFFER_Z2",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_FIND_BONE_PATH_BUFFER_Z2"
        }
      }
    },
    "Trail_FindBonePath_End": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832952,
            "rva": 638648,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841848,
            "rva": 647544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841832,
            "rva": 647528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 607,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_FindBonePath"
            },
            "instr_offset": 607,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 656,
          "symbol_index": 656,
          "accessor": "DTTR_PCDOGS_D_Trail_FindBonePath_End",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_FIND_BONE_PATH_END",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_FIND_BONE_PATH_END"
        }
      }
    },
    "Trail_ProcessComponents": {
      "function": {
        "analysis": {
          "en": {
            "address": 4200368,
            "rva": 6064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateEffect"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4200768,
            "rva": 6464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateEffect"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4200768,
            "rva": 6464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_RenderAnimated"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_UpdateEffect"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessRendering"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_TraverseNodeTree"
                },
                "instr_offset": 1333,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 6A 00 6A 00 56 E8 ??",
          "match_offset": -41
        },
        "docs": "Processes an actor trail chain, refreshes queued Component_TrailObject records, and clears each processed_flag byte.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 36,
          "symbol_index": 36,
          "accessor": "DTTR_PCDOGS_F_Trail_ProcessComponents",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TRAIL_PROCESS_COMPONENTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TRAIL_PROCESS_COMPONENTS"
        }
      }
    },
    "Trail_RenderAnimated": {
      "function": {
        "analysis": {
          "en": {
            "address": 4335504,
            "rva": 141200,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 2783,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 2834,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4337440,
            "rva": 143136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 2783,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 2834,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4337440,
            "rva": 143136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Animation_ProcessController"
                },
                "instr_offset": 2783,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_SetPolygonUVs"
                },
                "instr_offset": 2834,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 123,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "trail",
              "type": "Component_TrailObject*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "BF 77 1A 3B C6 0F 84 ??",
          "match_offset": -33
        },
        "docs": "Builds camera-facing animated trail polygon batches from Component_TrailObject/Trail_Segment data and links them into render buckets.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 279,
          "symbol_index": 279,
          "accessor": "DTTR_PCDOGS_F_Trail_RenderAnimated",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TRAIL_RENDER_ANIMATED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TRAIL_RENDER_ANIMATED"
        }
      }
    },
    "Trail_ResetBone": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425792,
            "rva": 231488,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_AnimTime"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_CurrentPathNodeSelector"
                },
                "instr_offset": 18,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_Entry0Timestamp"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_PathCount"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_PathNodeCount"
                },
                "instr_offset": 24,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 875,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetPlayerState"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 910,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1495,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430848,
            "rva": 236544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_AnimTime"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_CurrentPathNodeSelector"
                },
                "instr_offset": 18,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_Entry0Timestamp"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_PathCount"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_PathNodeCount"
                },
                "instr_offset": 24,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetPlayerState"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 910,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1498,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4430816,
            "rva": 236512,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_AnimTime"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_CurrentPathNodeSelector"
                },
                "instr_offset": 18,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_Entry0Timestamp"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_PathCount"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_ResetBone_PathNodeCount"
                },
                "instr_offset": 24,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpPauseToggle"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Script_OpSetPlayerState"
                },
                "instr_offset": 96,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 910,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1498,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Trail_ResetBone_CurrentPathNodeSelector"
            },
            "instr_offset": 18,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_ResetBone_PathNodeCount"
            },
            "instr_offset": 24,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_ResetBone_Entry0Timestamp"
            },
            "instr_offset": 30,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_ResetBone_AnimTime"
            },
            "instr_offset": 40,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_ResetBone_PathCount"
            },
            "instr_offset": 12,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "33 C9 C7 05 ?? ??",
          "match_offset": 0
        },
        "docs": "Clears bone-trail state and entry buffers.",
        "hook": {
          "kind": "rel32",
          "patch_size": 12,
          "entry_patch_size": 12
        },
        "sdk": {
          "id": 473,
          "symbol_index": 473,
          "accessor": "DTTR_PCDOGS_F_Trail_ResetBone",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TRAIL_RESET_BONE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TRAIL_RESET_BONE"
        }
      }
    },
    "Trail_ResetBone_AnimTime": {
      "data": {
        "analysis": {
          "en": {
            "address": 4833136,
            "rva": 638832,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4842032,
            "rva": 647728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4842016,
            "rva": 647712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 40,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_ResetBone"
            },
            "instr_offset": 40,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 665,
          "symbol_index": 665,
          "accessor": "DTTR_PCDOGS_D_Trail_ResetBone_AnimTime",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_RESET_BONE_ANIM_TIME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_RESET_BONE_ANIM_TIME"
        }
      }
    },
    "Trail_ResetBone_CurrentPathNodeSelector": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832944,
            "rva": 638640,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 18,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841840,
            "rva": 647536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 18,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841824,
            "rva": 647520,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 18,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_ResetBone"
            },
            "instr_offset": 18,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "docs": "Bone-trail current path-node selector. Trail_FindBonePath writes it from path-node metadata; later trail code resolves the selector through current-level runtime tables.",
        "sdk": {
          "id": 654,
          "symbol_index": 654,
          "accessor": "DTTR_PCDOGS_D_Trail_ResetBone_CurrentPathNodeSelector",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_RESET_BONE_CURRENT_PATH_NODE_SELECTOR",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_RESET_BONE_CURRENT_PATH_NODE_SELECTOR"
        }
      }
    },
    "Trail_ResetBone_Entry0Timestamp": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832976,
            "rva": 638672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841872,
            "rva": 647568,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841856,
            "rva": 647552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 30,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_ResetBone"
            },
            "instr_offset": 30,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 659,
          "symbol_index": 659,
          "accessor": "DTTR_PCDOGS_D_Trail_ResetBone_Entry0Timestamp",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_RESET_BONE_ENTRY0_TIMESTAMP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_RESET_BONE_ENTRY0_TIMESTAMP"
        }
      }
    },
    "Trail_ResetBone_PathCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830204,
            "rva": 23635900,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841468,
            "rva": 23647164,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840892,
            "rva": 23646588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 12,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_ResetBone"
            },
            "instr_offset": 12,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 948,
          "symbol_index": 948,
          "accessor": "DTTR_PCDOGS_D_Trail_ResetBone_PathCount",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_RESET_BONE_PATH_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_RESET_BONE_PATH_COUNT"
        }
      }
    },
    "Trail_ResetBone_PathNodeCount": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832948,
            "rva": 638644,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 24,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841844,
            "rva": 647540,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 24,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841828,
            "rva": 647524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 24,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_ResetBone"
            },
            "instr_offset": 24,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 655,
          "symbol_index": 655,
          "accessor": "DTTR_PCDOGS_D_Trail_ResetBone_PathNodeCount",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_RESET_BONE_PATH_NODE_COUNT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_RESET_BONE_PATH_NODE_COUNT"
        }
      }
    },
    "Trail_Segment": {
      "type": {
        "members": [
          {
            "type": "int32_t",
            "name": "active",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "world_transform[32]",
            "offset": 4,
            "doc": null
          },
          {
            "type": "Math_Vec3I16",
            "name": "start",
            "offset": 36,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "start_coord_hi",
            "offset": 42,
            "doc": "High half of the packed start coordinate word written by Trail_UpdateEffect; Trail_RenderAnimated reads it as part of the packed word."
          },
          {
            "type": "Math_Vec3I16",
            "name": "end",
            "offset": 44,
            "doc": null
          },
          {
            "type": "int16_t",
            "name": "end_coord_hi",
            "offset": 50,
            "doc": "High half of the packed end coordinate word written by Trail_UpdateEffect; Trail_RenderAnimated reads it as part of the packed word."
          }
        ],
        "size": 52,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Trail_Segment"
        }
      }
    },
    "Trail_SpawnFromEntry": {
      "function": {
        "analysis": {
          "en": {
            "address": 4232272,
            "rva": 37968,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Projectile_LiveActorListHead"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 98,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 82,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 424,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 882,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 942,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 798,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_HandleCollection"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4232736,
            "rva": 38432,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Projectile_LiveActorListHead"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 945,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 798,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateActorState"
                },
                "instr_offset": 330,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4232736,
            "rva": 38432,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Projectile_LiveActorListHead"
                },
                "instr_offset": 92,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 104,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Component_SpawnFromDefinition"
                },
                "instr_offset": 88,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 885,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Actor_ProcessPlayerBehavior"
                },
                "instr_offset": 945,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Collision_ProcessProjectileLifecycle"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Physics_CalculateActorVelocity"
                },
                "instr_offset": 798,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Powerup_UpdateActorState"
                },
                "instr_offset": 330,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "trail_index",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Projectile_LiveActorListHead"
            },
            "instr_offset": 92,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 15 ?? ?? ?? ?? 83 EC 24",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 83,
          "symbol_index": 83,
          "accessor": "DTTR_PCDOGS_F_Trail_SpawnFromEntry",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TRAIL_SPAWN_FROM_ENTRY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TRAIL_SPAWN_FROM_ENTRY"
        }
      }
    },
    "Trail_UpdateAndRenderBone": {
      "function": {
        "analysis": {
          "en": {
            "address": 4425840,
            "rva": 231536,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_Entries"
                },
                "instr_offset": 1175,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_Entry0PosX"
                },
                "instr_offset": 1035,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathBufferY"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathBufferZ"
                },
                "instr_offset": 1054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathBufferZ1"
                },
                "instr_offset": 343,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathNodes"
                },
                "instr_offset": 949,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_TargetPosition"
                },
                "instr_offset": 311,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 1321,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1781,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1845,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2035,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 2386,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 910,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 1495,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4430896,
            "rva": 236592,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_Entries"
                },
                "instr_offset": 1175,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_Entry0PosX"
                },
                "instr_offset": 1035,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathBufferY"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathBufferZ"
                },
                "instr_offset": 1054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathBufferZ1"
                },
                "instr_offset": 343,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathNodes"
                },
                "instr_offset": 949,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_TargetPosition"
                },
                "instr_offset": 311,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 1324,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1784,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1848,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2038,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2205,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 2389,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 910,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 1498,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4430864,
            "rva": 236560,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_Entries"
                },
                "instr_offset": 1175,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_Entry0PosX"
                },
                "instr_offset": 1035,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathBufferY"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathBufferZ"
                },
                "instr_offset": 1054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathBufferZ1"
                },
                "instr_offset": 343,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_PathNodes"
                },
                "instr_offset": 949,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Trail_UpdateAndRenderBone_TargetPosition"
                },
                "instr_offset": 311,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Actor_CloneTemplateWithTemplateRelativeFixups"
                },
                "instr_offset": 1324,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1784,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 1848,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2038,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_CalculateFixedSqrt22"
                },
                "instr_offset": 2205,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Math_GenerateRandom"
                },
                "instr_offset": 2389,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 265,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 87,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 910,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Trail_ResetBone"
                },
                "instr_offset": 1498,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Player_ProcessMovement"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "actor",
              "type": "Actor_State*"
            },
            {
              "name": "movement_vec",
              "type": "int32_t*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Trail_UpdateAndRenderBone_Entries"
            },
            "instr_offset": 1175,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_UpdateAndRenderBone_Entry0PosX"
            },
            "instr_offset": 1035,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_UpdateAndRenderBone_PathNodes"
            },
            "instr_offset": 949,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_UpdateAndRenderBone_PathBufferY"
            },
            "instr_offset": 1099,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_UpdateAndRenderBone_PathBufferZ"
            },
            "instr_offset": 1054,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_UpdateAndRenderBone_TargetPosition"
            },
            "instr_offset": 311,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Trail_UpdateAndRenderBone_PathBufferZ1"
            },
            "instr_offset": 343,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 34 A1 ??",
          "match_offset": 0
        },
        "docs": "Updates/renders bone-trail movement effects; movement_vec carries the output and caller overwrites native return metadata.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 474,
          "symbol_index": 474,
          "accessor": "DTTR_PCDOGS_F_Trail_UpdateAndRenderBone",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TRAIL_UPDATE_AND_RENDER_BONE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TRAIL_UPDATE_AND_RENDER_BONE"
        }
      }
    },
    "Trail_UpdateAndRenderBone_Entries": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832960,
            "rva": 638656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1175,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841856,
            "rva": 647552,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1175,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841840,
            "rva": 647536,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1175,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_UpdateAndRenderBone"
            },
            "instr_offset": 1175,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 658,
          "symbol_index": 658,
          "accessor": "DTTR_PCDOGS_D_Trail_UpdateAndRenderBone_Entries",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_UPDATE_AND_RENDER_BONE_ENTRIES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_UPDATE_AND_RENDER_BONE_ENTRIES"
        }
      }
    },
    "Trail_UpdateAndRenderBone_Entry0PosX": {
      "data": {
        "analysis": {
          "en": {
            "address": 4832980,
            "rva": 638676,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1035,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4841876,
            "rva": 647572,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1035,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4841860,
            "rva": 647556,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1035,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_UpdateAndRenderBone"
            },
            "instr_offset": 1035,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 660,
          "symbol_index": 660,
          "accessor": "DTTR_PCDOGS_D_Trail_UpdateAndRenderBone_Entry0PosX",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_UPDATE_AND_RENDER_BONE_ENTRY0_POS_X",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_UPDATE_AND_RENDER_BONE_ENTRY0_POS_X"
        }
      }
    },
    "Trail_UpdateAndRenderBone_PathBufferY": {
      "data": {
        "analysis": {
          "en": {
            "address": 4833124,
            "rva": 638820,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4842020,
            "rva": 647716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4842004,
            "rva": 647700,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1099,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_UpdateAndRenderBone"
            },
            "instr_offset": 1099,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 662,
          "symbol_index": 662,
          "accessor": "DTTR_PCDOGS_D_Trail_UpdateAndRenderBone_PathBufferY",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_UPDATE_AND_RENDER_BONE_PATH_BUFFER_Y",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_UPDATE_AND_RENDER_BONE_PATH_BUFFER_Y"
        }
      }
    },
    "Trail_UpdateAndRenderBone_PathBufferZ": {
      "data": {
        "analysis": {
          "en": {
            "address": 4833128,
            "rva": 638824,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4842024,
            "rva": 647720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4842008,
            "rva": 647704,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 1054,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_UpdateAndRenderBone"
            },
            "instr_offset": 1054,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 663,
          "symbol_index": 663,
          "accessor": "DTTR_PCDOGS_D_Trail_UpdateAndRenderBone_PathBufferZ",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_UPDATE_AND_RENDER_BONE_PATH_BUFFER_Z",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_UPDATE_AND_RENDER_BONE_PATH_BUFFER_Z"
        }
      }
    },
    "Trail_UpdateAndRenderBone_PathBufferZ1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4833140,
            "rva": 638836,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 343,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4842036,
            "rva": 647732,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 343,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4842020,
            "rva": 647716,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 343,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_UpdateAndRenderBone"
            },
            "instr_offset": 343,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 666,
          "symbol_index": 666,
          "accessor": "DTTR_PCDOGS_D_Trail_UpdateAndRenderBone_PathBufferZ1",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_UPDATE_AND_RENDER_BONE_PATH_BUFFER_Z1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_UPDATE_AND_RENDER_BONE_PATH_BUFFER_Z1"
        }
      }
    },
    "Trail_UpdateAndRenderBone_PathNodes": {
      "data": {
        "analysis": {
          "en": {
            "address": 4833120,
            "rva": 638816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 949,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4842016,
            "rva": 647712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 949,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4842000,
            "rva": 647696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 949,
                "addr_offset": 6,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_UpdateAndRenderBone"
            },
            "instr_offset": 949,
            "addr_offset": 6,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 661,
          "symbol_index": 661,
          "accessor": "DTTR_PCDOGS_D_Trail_UpdateAndRenderBone_PathNodes",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_UPDATE_AND_RENDER_BONE_PATH_NODES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_UPDATE_AND_RENDER_BONE_PATH_NODES"
        }
      }
    },
    "Trail_UpdateAndRenderBone_TargetPosition": {
      "data": {
        "analysis": {
          "en": {
            "address": 4833132,
            "rva": 638828,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 311,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4842028,
            "rva": 647724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 311,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4842012,
            "rva": 647708,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_UpdateAndRenderBone"
                },
                "instr_offset": 311,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Trail_UpdateAndRenderBone"
            },
            "instr_offset": 311,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 664,
          "symbol_index": 664,
          "accessor": "DTTR_PCDOGS_D_Trail_UpdateAndRenderBone_TargetPosition",
          "sdk_id": "DTTR_PCDOGS_DATA_TRAIL_UPDATE_AND_RENDER_BONE_TARGET_POSITION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TRAIL_UPDATE_AND_RENDER_BONE_TARGET_POSITION"
        }
      }
    },
    "Trail_UpdateEffect": {
      "function": {
        "analysis": {
          "en": {
            "address": 4200464,
            "rva": 6160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4200864,
            "rva": 6560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4200864,
            "rva": 6560,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderNodeTree"
                },
                "instr_offset": 1142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Scene_RenderSubMesh"
                },
                "instr_offset": 100,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_ProcessComponents"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "char",
          "params": [
            {
              "name": "trail",
              "type": "Component_TrailObject*"
            },
            {
              "name": "actor",
              "type": "Actor_State*",
              "docs": "Actor supplying mesh vertex data at actor when a live segment is written; null is only valid for inactive/expiry updates."
            },
            {
              "name": "component_record",
              "type": "void*",
              "docs": "Component/node record whose fields select the start and end mesh vertices."
            },
            {
              "name": "active",
              "type": "char"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0B 56 F6 C1 02 0F 85 ??",
          "match_offset": -34
        },
        "docs": "Advances the Component_TrailObject ring segment, writes the active flag, copies the cached transform, and for live segments stores start/end mesh vertex positions. Returns 0 when an inactive segment expires, otherwise 1.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 37,
          "symbol_index": 37,
          "accessor": "DTTR_PCDOGS_F_Trail_UpdateEffect",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TRAIL_UPDATE_EFFECT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TRAIL_UPDATE_EFFECT"
        }
      }
    },
    "Tree_AllocateMapNode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455792,
            "rva": 261488,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 2113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461328,
            "rva": 267024,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 2113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461344,
            "rva": 267040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 887,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 2113,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 777,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 992,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void*",
          "params": [
            {
              "name": "tree",
              "type": "void*",
              "docs": "Tree header whose allocation-size field in the record controls the node allocation size."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 8B 48 04 51 E8 ??",
          "match_offset": 0
        },
        "docs": "Allocates one tree node block and returns the user payload pointer at the tree node header0x14.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 562,
          "symbol_index": 562,
          "accessor": "DTTR_PCDOGS_F_Tree_AllocateMapNode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_ALLOCATE_MAP_NODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_ALLOCATE_MAP_NODE"
        }
      }
    },
    "Tree_CreateMap": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455856,
            "rva": 261552,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461392,
            "rva": 267088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 713,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461408,
            "rva": 267104,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_AllocateResourceMemory"
                },
                "instr_offset": 2,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 703,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 612,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "uint32_t*",
          "params": [
            {
              "name": "payload_size",
              "type": "int32_t",
              "docs": "Size of each user payload; the stored allocation size is payload_size + 0x14."
            },
            {
              "name": "compare_func",
              "type": "Tree_MapCompareCallback",
              "docs": "Compare callback stored in the tree header and later called with two payload pointers."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "6A 0C E8 ?? ?? ??",
          "match_offset": 0
        },
        "docs": "Allocates and initializes a tree header: empty root, node allocation size, and compare callback.",
        "hook": {
          "kind": "rel32",
          "patch_size": 7,
          "entry_patch_size": 7
        },
        "sdk": {
          "id": 564,
          "symbol_index": 564,
          "accessor": "DTTR_PCDOGS_F_Tree_CreateMap",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_CREATE_MAP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_CREATE_MAP"
        }
      }
    },
    "Tree_DestroyMap": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455904,
            "rva": 261600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_SpliceRingIntoRootList"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1719,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 3303,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461440,
            "rva": 267136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_SpliceRingIntoRootList"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 5012,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1719,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461456,
            "rva": 267152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_SpliceRingIntoRootList"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 4940,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1719,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "tree",
              "type": "int32_t*",
              "docs": "Tree header to destroy; all linked node headers are freed before the header itself."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "37 8B 46 0C 50 57 E8 ??",
          "match_offset": -17
        },
        "docs": "Destroys every node in tree by detaching list links and freeing each node block, then frees the tree header.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 565,
          "symbol_index": 565,
          "accessor": "DTTR_PCDOGS_F_Tree_DestroyMap",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_DESTROY_MAP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_DESTROY_MAP"
        }
      }
    },
    "Tree_FixupMapAfterInsert": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455680,
            "rva": 261376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RotateAndDetachMapNode"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1725,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 2102,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461216,
            "rva": 266912,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RotateAndDetachMapNode"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1725,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 2102,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461232,
            "rva": 266928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RotateAndDetachMapNode"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1725,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 2102,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "tree",
              "type": "int32_t*",
              "docs": "Tree header containing root, allocation size, and compare callback."
            },
            {
              "name": "node_payload",
              "type": "void*",
              "docs": "Payload pointer for the newly inserted/adjusted node; returns -1 when nullptr."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "33 C0 5B C3 57 56 E8 ??",
          "match_offset": -42
        },
        "docs": "Fixes TreeMap ordering after insertion or priority update by comparing node_payload against parent/root links, detaching/reinserting when needed, and returning -1 for null payload.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 561,
          "symbol_index": 561,
          "accessor": "DTTR_PCDOGS_F_Tree_FixupMapAfterInsert",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_FIXUP_MAP_AFTER_INSERT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_FIXUP_MAP_AFTER_INSERT"
        }
      }
    },
    "Tree_FreeMapNode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455824,
            "rva": 261520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1710,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461360,
            "rva": 267056,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 963,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1710,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461376,
            "rva": 267072,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FreeResourceMemory"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 953,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1290,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1710,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "node_payload",
              "type": "void*",
              "docs": "Payload pointer returned by Tree_AllocateMapNode; nullptr is accepted and returned unchanged."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 85 C0 74 ?? 83 C0 EC 50 E8 ??",
          "match_offset": 0
        },
        "docs": "Frees the full tree node allocation by subtracting the hidden node header from node_payload.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 563,
          "symbol_index": 563,
          "accessor": "DTTR_PCDOGS_F_Tree_FreeMapNode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_FREE_MAP_NODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_FREE_MAP_NODE"
        }
      }
    },
    "Tree_GetFirstMapNode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455648,
            "rva": 261344,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 3286,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461184,
            "rva": 266880,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 944,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 4995,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1296,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461200,
            "rva": 266896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 4923,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1296,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "tree",
              "type": "int32_t*",
              "docs": "Tree header to pop from; nullptr returns nullptr."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? 83 C6 14 56 50 E8 ??",
          "match_offset": -14
        },
        "docs": "Returns and removes the first/root payload from tree, or nullptr when the tree is empty.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 560,
          "symbol_index": 560,
          "accessor": "DTTR_PCDOGS_F_Tree_GetFirstMapNode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_GET_FIRST_MAP_NODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_GET_FIRST_MAP_NODE"
        }
      }
    },
    "Tree_InitializeMapNode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455040,
            "rva": 260736,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InsertMapNode"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1786,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 2151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 674,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1164,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4460576,
            "rva": 266272,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InsertMapNode"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 916,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1786,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 2151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 674,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1164,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4460592,
            "rva": 266288,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InsertMapNode"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Audio_ResumeAllSounds"
                },
                "instr_offset": 906,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 1786,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Nav_ProcessPathNode"
                },
                "instr_offset": 2151,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 674,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 934,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Trail_FindBonePath"
                },
                "instr_offset": 1164,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void**",
          "params": [
            {
              "name": "tree",
              "type": "int32_t*",
              "docs": "Tree header: root node, allocation size, and compare callback."
            },
            {
              "name": "node_payload",
              "type": "void**",
              "docs": "Payload pointer returned by Tree_AllocateMapNode; the node header begins immediately before it."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "12 8B 44 24 08 50 E8 ??",
          "match_offset": -27
        },
        "docs": "Clears the hidden node header for node_payload and inserts the node into tree.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 554,
          "symbol_index": 554,
          "accessor": "DTTR_PCDOGS_F_Tree_InitializeMapNode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_INITIALIZE_MAP_NODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_INITIALIZE_MAP_NODE"
        }
      }
    },
    "Tree_InsertMapNode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455088,
            "rva": 260784,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RebalanceMap"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RotateAndDetachMapNode"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4460624,
            "rva": 266320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RebalanceMap"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RotateAndDetachMapNode"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4460640,
            "rva": 266336,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RebalanceMap"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RotateAndDetachMapNode"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void**",
          "params": [
            {
              "name": "tree",
              "type": "int32_t*",
              "docs": "Tree header whose root/list links and compare callback control insertion."
            },
            {
              "name": "node_header",
              "type": "int32_t*",
              "docs": "Internal node header to link into the tree/list."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 57 8B 7C 24 0C 8B 07 85 C0 75 ?? 8B 44 24 10 89 40 ?? 89 00 89 07 5F 5E C3",
          "match_offset": 0
        },
        "docs": "Links node_header into the TreeMap circular root list, updating the root through the tree comparator when required.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 555,
          "symbol_index": 555,
          "accessor": "DTTR_PCDOGS_F_Tree_InsertMapNode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_INSERT_MAP_NODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_INSERT_MAP_NODE"
        }
      }
    },
    "Tree_MapCompareCallback": {
      "type": {
        "ret": "int32_t",
        "params": [
          {
            "type": "void*",
            "name": "lhs_payload",
            "doc": null
          },
          {
            "type": "void*",
            "name": "rhs_payload",
            "doc": null
          }
        ],
        "unstable": true,
        "kind": "function_type_alias",
        "docs": "TreeMap payload comparator stored in the tree header and called with two node payload pointers.",
        "calling_convention": "cdecl",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Tree_MapCompareCallback"
        }
      }
    },
    "Tree_RebalanceMap": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455312,
            "rva": 261008,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Tree_RebalanceMap_Buckets"
                },
                "instr_offset": 21,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InsertMapNode"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4460848,
            "rva": 266544,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Tree_RebalanceMap_Buckets"
                },
                "instr_offset": 21,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InsertMapNode"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4460864,
            "rva": 266560,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Tree_RebalanceMap_Buckets"
                },
                "instr_offset": 21,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InsertMapNode"
                },
                "instr_offset": 187,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void**",
          "params": [
            {
              "name": "tree",
              "type": "int32_t*",
              "docs": "Tree header whose root chain is bucketized and rebuilt."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Tree_RebalanceMap_Buckets"
            },
            "instr_offset": 21,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 44 24 04 53 55 56 8B 28 57 33 DB 8B FD 8B 6D 04 0F BF 4F 10 8B 34 8D ?? ?? ?? ?? 3B F3 74 ?? 0F BF 57 10 8D 47 14 8D 4E 14 89 1C 95 ?? ?? ?? ??",
          "match_offset": 0
        },
        "docs": "Rebuilds/rebalances tree using the compare callback and the temporary tree_map_buckets array.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 558,
          "symbol_index": 558,
          "accessor": "DTTR_PCDOGS_F_Tree_RebalanceMap",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_REBALANCE_MAP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_REBALANCE_MAP"
        }
      }
    },
    "Tree_RebalanceMap_Buckets": {
      "data": {
        "analysis": {
          "en": {
            "address": 4837072,
            "rva": 642768,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RebalanceMap"
                },
                "instr_offset": 21,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4847304,
            "rva": 653000,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RebalanceMap"
                },
                "instr_offset": 21,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4846728,
            "rva": 652424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RebalanceMap"
                },
                "instr_offset": 21,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Tree_RebalanceMap"
            },
            "instr_offset": 21,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 696,
          "symbol_index": 696,
          "accessor": "DTTR_PCDOGS_D_Tree_RebalanceMap_Buckets",
          "sdk_id": "DTTR_PCDOGS_DATA_TREE_REBALANCE_MAP_BUCKETS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_TREE_REBALANCE_MAP_BUCKETS"
        }
      }
    },
    "Tree_RemoveMapNode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455232,
            "rva": 260928,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RebalanceMap"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RotateAndDetachMapNode"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_SpliceRingIntoRootList"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4460768,
            "rva": 266464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RebalanceMap"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RotateAndDetachMapNode"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_SpliceRingIntoRootList"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4460784,
            "rva": 266480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RebalanceMap"
                },
                "instr_offset": 57,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_RotateAndDetachMapNode"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_SpliceRingIntoRootList"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 20,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void**",
          "params": [
            {
              "name": "tree",
              "type": "int32_t*",
              "docs": "Tree header whose root/list links are updated."
            },
            {
              "name": "node_payload",
              "type": "void**",
              "docs": "Payload pointer for the node to remove; node metadata is stored storage before it."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8D 70 EC 56 57 E8 ??",
          "match_offset": -13
        },
        "docs": "Removes node_payload from tree, detaches/rethreads child links, and rebalances the remaining tree when needed.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 557,
          "symbol_index": 557,
          "accessor": "DTTR_PCDOGS_F_Tree_RemoveMapNode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_REMOVE_MAP_NODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_REMOVE_MAP_NODE"
        }
      }
    },
    "Tree_RotateAndDetachMapNode": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455536,
            "rva": 261232,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InsertMapNode"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_FixupMapAfterInsert"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4461072,
            "rva": 266768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InsertMapNode"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_FixupMapAfterInsert"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4461088,
            "rva": 266784,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InsertMapNode"
                },
                "instr_offset": 66,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_FixupMapAfterInsert"
                },
                "instr_offset": 48,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 19,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t*",
          "params": [
            {
              "name": "tree",
              "type": "int32_t*",
              "docs": "Tree header passed back to Tree_InsertMapNode while rotating detached nodes."
            },
            {
              "name": "node_header",
              "type": "int32_t*",
              "docs": "Internal node header pointer, storage before the user payload."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 08 89 0A 50 53 E8 ??",
          "match_offset": -60
        },
        "docs": "Walks upward from node_header, detaches affected parent links, toggles side bits, and reinserts nodes into tree.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 559,
          "symbol_index": 559,
          "accessor": "DTTR_PCDOGS_F_Tree_RotateAndDetachMapNode",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_ROTATE_AND_DETACH_MAP_NODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_ROTATE_AND_DETACH_MAP_NODE"
        }
      }
    },
    "Tree_SpliceRingIntoRootList": {
      "function": {
        "analysis": {
          "en": {
            "address": 4455184,
            "rva": 260880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4460720,
            "rva": 266416,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4460736,
            "rva": 266432,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Tree_RemoveMapNode"
                },
                "instr_offset": 29,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "tree",
              "type": "int32_t*",
              "docs": "Tree header whose root/list links are updated."
            },
            {
              "name": "node_header",
              "type": "void*",
              "docs": "Internal node header to detach; nullptr is accepted as a no-op."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 4C 24 08 85 C9 74 ?? 8B 44 24 04 56 8B 71 ?? 8B 00 8B 50 ?? 89 70 ??",
          "match_offset": 0
        },
        "docs": "Splices node_header's circular sibling ring into the root list headed by tree[0], concatenating the child ring into the root ring.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 556,
          "symbol_index": 556,
          "accessor": "DTTR_PCDOGS_F_Tree_SpliceRingIntoRootList",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_TREE_SPLICE_RING_INTO_ROOT_LIST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_TREE_SPLICE_RING_INTO_ROOT_LIST"
        }
      }
    },
    "UI_BoneAndLivesCounterAnimState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831108,
            "rva": 636804,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839748,
            "rva": 645444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839732,
            "rva": 645428,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 7,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ClearTransitionFlags"
            },
            "instr_offset": 7,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_ClearTransitionFlags",
          "instr_offset": 7,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Packed HUD counter animation state: low word drives bone counter animation, high word drives lives icon animation.",
        "sdk": {
          "id": 523,
          "symbol_index": 523,
          "accessor": "DTTR_PCDOGS_D_UI_BoneAndLivesCounterAnimState",
          "sdk_id": "DTTR_PCDOGS_DATA_UI_BONE_AND_LIVES_COUNTER_ANIM_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_UI_BONE_AND_LIVES_COUNTER_ANIM_STATE"
        }
      }
    },
    "UI_ComputeStringWidth": {
      "function": {
        "analysis": {
          "en": {
            "address": 4376496,
            "rva": 182192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4380240,
            "rva": 185936,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4380208,
            "rva": 185904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "text",
              "type": "char*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 56 8B 41",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 372,
          "symbol_index": 372,
          "accessor": "DTTR_PCDOGS_F_UI_ComputeStringWidth",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_COMPUTE_STRING_WIDTH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_COMPUTE_STRING_WIDTH"
        }
      }
    },
    "UI_InitializedFlag": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830112,
            "rva": 23635808,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 292,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841376,
            "rva": 23647072,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 292,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27840800,
            "rva": 23646496,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_AnimateSlots"
                },
                "instr_offset": 292,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_Update"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_AnimateSlots"
            },
            "instr_offset": 292,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "UI_Update"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "BOOL",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_AnimateSlots",
          "instr_offset": 292,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "unknown",
        "docs": "UI initialization flag checked by UI_Update/Menu_AnimateSlots.",
        "sdk": {
          "id": 780,
          "symbol_index": 780,
          "accessor": "DTTR_PCDOGS_D_UI_InitializedFlag",
          "sdk_id": "DTTR_PCDOGS_DATA_UI_INITIALIZED_FLAG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_UI_INITIALIZED_FLAG"
        }
      }
    },
    "UI_LivesCounterLastValue": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831852,
            "rva": 637548,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 379,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840748,
            "rva": 646444,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 379,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840732,
            "rva": 646428,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 379,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_UpdatePauseMenu"
            },
            "instr_offset": 379,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int16_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Menu_UpdatePauseMenu",
          "instr_offset": 379,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Last/displayed lives value used to restart the HUD lives-counter animation when the live value changes.",
        "sdk": {
          "id": 562,
          "symbol_index": 562,
          "accessor": "DTTR_PCDOGS_D_UI_LivesCounterLastValue",
          "sdk_id": "DTTR_PCDOGS_DATA_UI_LIVES_COUNTER_LAST_VALUE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_UI_LIVES_COUNTER_LAST_VALUE"
        }
      }
    },
    "UI_LivesIconState": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "target_visible",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "animating",
            "offset": 1,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "visible",
            "offset": 2,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "animation_frame",
            "offset": 3,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "sdk": {
          "name": "DTTR_PCDOGS_T_UI_LivesIconState"
        }
      }
    },
    "UI_PuppyCounterAnimState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4830712,
            "rva": 636408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 23,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4839096,
            "rva": 644792,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 23,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4839080,
            "rva": 644776,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ClearTransitionFlags"
                },
                "instr_offset": 23,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Menu_ClearTransitionFlags"
            },
            "instr_offset": 23,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 513,
          "symbol_index": 513,
          "accessor": "DTTR_PCDOGS_D_UI_PuppyCounterAnimState",
          "sdk_id": "DTTR_PCDOGS_DATA_UI_PUPPY_COUNTER_ANIM_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_UI_PUPPY_COUNTER_ANIM_STATE"
        }
      }
    },
    "UI_RenderButtonPrompts": {
      "function": {
        "analysis": {
          "en": {
            "address": 4376128,
            "rva": 181824,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 74,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 126,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 859,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2733,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 1066,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "button_prompt_flags",
              "type": "uint32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C3 06 74 ?? 40 8B 35 ??",
          "match_offset": -21
        },
        "docs": "Render bottom-center accept/cancel button prompts selected by buttonPromptFlags bits.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 370,
          "symbol_index": 370,
          "accessor": "DTTR_PCDOGS_F_UI_RenderButtonPrompts",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_RENDER_BUTTON_PROMPTS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_RENDER_BUTTON_PROMPTS"
        }
      }
    },
    "UI_RenderCenteredNumber": {
      "function": {
        "analysis": {
          "en": {
            "address": 4357472,
            "rva": 163168,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateBoneCounter"
                },
                "instr_offset": 442,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 1647,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdatePuppyCounter"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4359600,
            "rva": 165296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateBoneCounter"
                },
                "instr_offset": 442,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 1649,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdatePuppyCounter"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4359600,
            "rva": 165296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 328,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 401,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 309,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateBoneCounter"
                },
                "instr_offset": 442,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 1649,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdatePuppyCounter"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "packed_center_xy",
              "type": "int32_t"
            },
            {
              "name": "number",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "8B 0D ?? ?? ?? ?? 83 EC 10",
          "match_offset": 0
        },
        "docs": "Render a decimal HUD number centered on the packed x/y anchor and return the final sprite render result.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 334,
          "symbol_index": 334,
          "accessor": "DTTR_PCDOGS_F_UI_RenderCenteredNumber",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_RENDER_CENTERED_NUMBER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_RENDER_CENTERED_NUMBER"
        }
      }
    },
    "UI_RenderStringWithFormatting": {
      "function": {
        "analysis": {
          "en": {
            "address": 4377120,
            "rva": 182816,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 12,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 364,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuad"
                },
                "instr_offset": 414,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 234,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 267,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 300,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 333,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 461,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 494,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 527,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 560,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 593,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 623,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 694,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 837,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 902,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 955,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 1010,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 1044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 1077,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 1228,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 1354,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderDifficultySelection"
                },
                "instr_offset": 47,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderDifficultySelection"
                },
                "instr_offset": 145,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderMusicSelection"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "x",
              "type": "int32_t"
            },
            {
              "name": "text",
              "type": "char*"
            },
            {
              "name": "format",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? C6 44 24 10 01",
          "match_offset": -30
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 12,
          "entry_patch_size": 12
        },
        "sdk": {
          "id": 375,
          "symbol_index": 375,
          "accessor": "DTTR_PCDOGS_F_UI_RenderStringWithFormatting",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_RENDER_STRING_WITH_FORMATTING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_RENDER_STRING_WITH_FORMATTING"
        }
      }
    },
    "UI_RenderText": {
      "function": {
        "analysis": {
          "en": {
            "address": 4376640,
            "rva": 182336,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 380,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuadMaterialSize"
                },
                "instr_offset": 425,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 292,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 831,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2908,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3812,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderConfirmPrompt"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 27,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 116,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderControlsConfiguration"
                },
                "instr_offset": 201,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 158,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 176,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 356,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 486,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 459,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 574,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 736,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 918,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSaveGame"
                },
                "instr_offset": 1008,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsA"
                },
                "instr_offset": 77,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsA"
                },
                "instr_offset": 227,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 196,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 192,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 1471,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4380400,
            "rva": 186096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 687,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 1310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuadMaterialSize"
                },
                "instr_offset": 604,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 388,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1220,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 2086,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 2221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 2348,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 831,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2908,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3812,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderConfirmPrompt"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 356,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 486,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 196,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1698,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4380368,
            "rva": 186064,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 13,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "D3D_SetBlendMode"
                },
                "instr_offset": 687,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ComputeColorGradient"
                },
                "instr_offset": 1310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedQuadMaterialSize"
                },
                "instr_offset": 604,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 388,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1220,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 142,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Debug_RenderOverlay"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 2086,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 2221,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_CalculateCompletionPercent"
                },
                "instr_offset": 2348,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Level_UpdateInterLevelMenu"
                },
                "instr_offset": 831,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2908,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3044,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3229,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3310,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 3812,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderConfirmPrompt"
                },
                "instr_offset": 135,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 162,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderFormattedText"
                },
                "instr_offset": 198,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 356,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 486,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 625,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 747,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderNameEntry"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 168,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderOptionsMenu"
                },
                "instr_offset": 599,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 63,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_RenderSimpleOptionsB"
                },
                "instr_offset": 196,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 132,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 592,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 202,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_UpdateLoadingScreen"
                },
                "instr_offset": 296,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 1698,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "text",
              "type": "char*"
            },
            {
              "name": "color",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 6A 00 C7 05 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 13,
          "entry_patch_size": 13
        },
        "sdk": {
          "id": 374,
          "symbol_index": 374,
          "accessor": "DTTR_PCDOGS_F_UI_RenderText",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_RENDER_TEXT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_RENDER_TEXT"
        }
      }
    },
    "UI_ShowConfirmDialog": {
      "function": {
        "analysis": {
          "en": {
            "address": 4475984,
            "rva": 281680,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_ShowConfirmDialog_ProgrammerMessage"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4483824,
            "rva": 289520,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_ShowConfirmDialog_ProgrammerMessage"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4483600,
            "rva": 289296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_ShowConfirmDialog_ProgrammerMessage"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_MallocWithRetry"
                },
                "instr_offset": 83,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "message",
              "type": "char const*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "UI_ShowConfirmDialog_ProgrammerMessage"
            },
            "instr_offset": 90,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "00 56 57 50 51 52 E8 ??",
          "match_offset": -20
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 624,
          "symbol_index": 624,
          "accessor": "DTTR_PCDOGS_F_UI_ShowConfirmDialog",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_SHOW_CONFIRM_DIALOG",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_SHOW_CONFIRM_DIALOG"
        }
      }
    },
    "UI_ShowConfirmDialog_ProgrammerMessage": {
      "data": {
        "analysis": {
          "en": {
            "address": 4541376,
            "rva": 347072,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4549712,
            "rva": 355408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4549692,
            "rva": 355388,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "UI_ShowConfirmDialog"
            },
            "instr_offset": 90,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 309,
          "symbol_index": 309,
          "accessor": "DTTR_PCDOGS_D_UI_ShowConfirmDialog_ProgrammerMessage",
          "sdk_id": "DTTR_PCDOGS_DATA_UI_SHOW_CONFIRM_DIALOG_PROGRAMMER_MESSAGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_UI_SHOW_CONFIRM_DIALOG_PROGRAMMER_MESSAGE"
        }
      }
    },
    "UI_ShowErrorMessage": {
      "function": {
        "analysis": {
          "en": {
            "address": 4476272,
            "rva": 281968,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 114,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4484112,
            "rva": 289808,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 114,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4483888,
            "rva": 289584,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_GetMainHandle"
                },
                "instr_offset": 114,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_AllocateHandle"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "message",
              "type": "char const*"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? 8D 44 24 10 50 68",
          "match_offset": -28
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 626,
          "symbol_index": 626,
          "accessor": "DTTR_PCDOGS_F_UI_ShowErrorMessage",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_SHOW_ERROR_MESSAGE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_SHOW_ERROR_MESSAGE"
        }
      }
    },
    "UI_StringTableEntry": {
      "type": {
        "members": [
          {
            "type": "uint16_t",
            "name": "string_id",
            "offset": 0,
            "doc": null
          },
          {
            "type": "uint16_t",
            "name": "offset",
            "offset": 2,
            "doc": null
          }
        ],
        "size": 4,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Two-word string table row: String_GetByIndex compares string_id, then uses position into the loaded string block.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_UI_StringTableEntry"
        }
      }
    },
    "UI_Update": {
      "function": {
        "analysis": {
          "en": {
            "address": 4378352,
            "rva": 184048,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_LoadingFadeDelay"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_InitializedFlag"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 344,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetGameHighestWorld"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 369,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 400,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4382784,
            "rva": 188480,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_LoadingFadeDelay"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_InitializedFlag"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetGameHighestWorld"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 410,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4382752,
            "rva": 188448,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Menu_LoadingFadeDelay"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_InitializedFlag"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Audio_SetMusicFadeTarget"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Game_TriggerPause"
                },
                "instr_offset": 217,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_CheckCheatCodeSequence"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_SetMenuProgressState"
                },
                "instr_offset": 277,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Replay_StopDemoPlayback"
                },
                "instr_offset": 372,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_GetGameHighestWorld"
                },
                "instr_offset": 138,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Save_SaveGameLevelCompletion"
                },
                "instr_offset": 397,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_UpdateAndRenderScene"
                },
                "instr_offset": 410,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Menu_LoadingFadeDelay"
            },
            "instr_offset": 52,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "UI_InitializedFlag"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 8A ?? ?? ?? ?? ?? 53 85 C0 0F BE ?? 74 ?? C6 05 ?? ?? ?? ?? 05 BB",
          "match_offset": 0
        },
        "docs": "Advance title/loading UI state, fade delays, and related menu transition side effects.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 386,
          "symbol_index": 386,
          "accessor": "DTTR_PCDOGS_F_UI_Update",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_UPDATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_UPDATE"
        }
      }
    },
    "UI_UpdateAndRenderSprites": {
      "function": {
        "analysis": {
          "en": {
            "address": 4462512,
            "rva": 268208,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_UpdateAndRenderSprites_SpriteAnchorDispatchTable"
                },
                "instr_offset": 1259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_ProcessMeshCommands"
                },
                "instr_offset": 1658,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 2639,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 2862,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 3242,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_UpdateMeshCommandFlags"
                },
                "instr_offset": 1790,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Level_GetDataPointer"
                },
                "instr_offset": 1926,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 1933,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_GetByIndex"
                },
                "instr_offset": 2547,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_AllocateMapNode"
                },
                "instr_offset": 184,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_CreateMap"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_DestroyMap"
                },
                "instr_offset": 3303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_FreeMapNode"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 230,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_GetFirstMapNode"
                },
                "instr_offset": 3286,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Tree_InitializeMapNode"
                },
                "instr_offset": 203,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Game_RenderOverlays"
                },
                "instr_offset": 18,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuState"
                },
                "instr_offset": 2502,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_UpdateAndRenderSprites_SpriteAnchorDispatchTable"
                },
                "instr_offset": 1259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_UpdateAndRenderSprites_SpriteAnchorDispatchTable"
                },
                "instr_offset": 1259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "UI_UpdateAndRenderSprites_SpriteAnchorDispatchTable"
            },
            "instr_offset": 1259,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "55 8B EC 83 EC 4C A1 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 594,
          "symbol_index": 594,
          "accessor": "DTTR_PCDOGS_F_UI_UpdateAndRenderSprites",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_UPDATE_AND_RENDER_SPRITES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_UPDATE_AND_RENDER_SPRITES"
        }
      }
    },
    "UI_UpdateAndRenderSprites_SpriteAnchorDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4465832,
            "rva": 271528,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 1259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 1259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateAndRenderSprites"
                },
                "instr_offset": 1259,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "UI_UpdateAndRenderSprites"
            },
            "instr_offset": 1259,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "UI_UpdateAndRenderSprites",
          "instr_offset": 1259,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Eight-entry uint32_t jump table used by UI_UpdateAndRenderSprites for sprite anchor codes 1..8.",
        "sdk": {
          "id": 63,
          "symbol_index": 63,
          "accessor": "DTTR_PCDOGS_D_UI_UpdateAndRenderSprites_SpriteAnchorDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_UI_UPDATE_AND_RENDER_SPRITES_SPRITE_ANCHOR_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_UI_UPDATE_AND_RENDER_SPRITES_SPRITE_ANCHOR_DISPATCH_TABLE"
        }
      }
    },
    "UI_UpdateBoneCounter": {
      "function": {
        "analysis": {
          "en": {
            "address": 4357008,
            "rva": 162704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 442,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4359136,
            "rva": 164832,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 442,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4359136,
            "rva": 164832,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 340,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 442,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 451,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "target_bone_count",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? 53 56 57 8B 59",
          "match_offset": -19
        },
        "docs": "Animate the HUD bone counter toward targetBoneCount and render the counter at the left HUD anchor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 333,
          "symbol_index": 333,
          "accessor": "DTTR_PCDOGS_F_UI_UpdateBoneCounter",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_UPDATE_BONE_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_UPDATE_BONE_COUNTER"
        }
      }
    },
    "UI_UpdateLives": {
      "function": {
        "analysis": {
          "en": {
            "address": 4358400,
            "rva": 164096,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_UpdateLives_Counter1"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_UpdateLives_State"
                },
                "instr_offset": 303,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 630,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1559,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 895,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 1647,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4360528,
            "rva": 166224,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_UpdateLives_Counter1"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_UpdateLives_State"
                },
                "instr_offset": 303,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 632,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 1649,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4360528,
            "rva": 166224,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "UI_UpdateLives_Counter1"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "UI_UpdateLives_State"
                },
                "instr_offset": 303,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 632,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 1561,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 163,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Material_FindTextureByFrame"
                },
                "instr_offset": 897,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 1649,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "icon_count",
              "type": "int32_t"
            },
            {
              "name": "lives",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "UI_UpdateLives_State"
            },
            "instr_offset": 303,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "UI_UpdateLives_Counter1"
            },
            "instr_offset": 81,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 24 66 83 3D ??",
          "match_offset": 0
        },
        "docs": "Animate up to four life icons toward iconCount, render the icons and life number, and return the icon x anchor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 11,
          "entry_patch_size": 11
        },
        "sdk": {
          "id": 336,
          "symbol_index": 336,
          "accessor": "DTTR_PCDOGS_F_UI_UpdateLives",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_UPDATE_LIVES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_UPDATE_LIVES"
        }
      }
    },
    "UI_UpdateLives_Counter1": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831829,
            "rva": 637525,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840725,
            "rva": 646421,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840709,
            "rva": 646405,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 81,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "UI_UpdateLives"
            },
            "instr_offset": 81,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 560,
          "symbol_index": 560,
          "accessor": "DTTR_PCDOGS_D_UI_UpdateLives_Counter1",
          "sdk_id": "DTTR_PCDOGS_DATA_UI_UPDATE_LIVES_COUNTER1",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_UI_UPDATE_LIVES_COUNTER1"
        }
      }
    },
    "UI_UpdateLives_State": {
      "data": {
        "analysis": {
          "en": {
            "address": 4831828,
            "rva": 637524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 303,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4840724,
            "rva": 646420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 303,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4840708,
            "rva": 646404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "UI_UpdateLives"
                },
                "instr_offset": 303,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "UI_UpdateLives"
            },
            "instr_offset": 303,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 559,
          "symbol_index": 559,
          "accessor": "DTTR_PCDOGS_D_UI_UpdateLives_State",
          "sdk_id": "DTTR_PCDOGS_DATA_UI_UPDATE_LIVES_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_UI_UPDATE_LIVES_STATE"
        }
      }
    },
    "UI_UpdatePuppyCounter": {
      "function": {
        "analysis": {
          "en": {
            "address": 4357904,
            "rva": 163600,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 373,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4360032,
            "rva": 165728,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 375,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4360032,
            "rva": 165728,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderTexturedSprite"
                },
                "instr_offset": 375,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "UI_RenderCenteredNumber"
                },
                "instr_offset": 479,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_UpdatePauseMenu"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [
            {
              "name": "target_puppy_count",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? 53 55 56 8B 59",
          "match_offset": -19
        },
        "docs": "Animate the HUD puppy counter toward targetPuppyCount and render the counter at the right HUD anchor.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 335,
          "symbol_index": 335,
          "accessor": "DTTR_PCDOGS_F_UI_UpdatePuppyCounter",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_UI_UPDATE_PUPPY_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_UI_UPDATE_PUPPY_COUNTER"
        }
      }
    },
    "Video_CloseAVIFile": {
      "function": {
        "analysis": {
          "en": {
            "address": 4257392,
            "rva": 63088,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseAVIFile_MCICloseDevice"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4257872,
            "rva": 63568,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseAVIFile_MCICloseDevice"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4257872,
            "rva": 63568,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseAVIFile_MCICloseDevice"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Video_CloseAVIFile_MCICloseDevice"
            },
            "instr_offset": 5,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "01 FF 15 ?? ?? ?? ?? C3",
          "match_offset": -34
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 121,
          "symbol_index": 121,
          "accessor": "DTTR_PCDOGS_F_Video_CloseAVIFile",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_CLOSE_AVI_FILE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_CLOSE_AVI_FILE"
        }
      }
    },
    "Video_CloseAVIFile_MCICloseDevice": {
      "data": {
        "analysis": {
          "en": {
            "address": 4514984,
            "rva": 320680,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseAVIFile"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523176,
            "rva": 328872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseAVIFile"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523176,
            "rva": 328872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseAVIFile"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_CloseAVIFile"
            },
            "instr_offset": 5,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 118,
          "symbol_index": 118,
          "accessor": "DTTR_PCDOGS_D_Video_CloseAVIFile_MCICloseDevice",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_CLOSE_AVI_FILE_MCI_CLOSE_DEVICE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_CLOSE_AVI_FILE_MCI_CLOSE_DEVICE"
        }
      }
    },
    "Video_CloseMovieFile": {
      "function": {
        "analysis": {
          "en": {
            "address": 4302944,
            "rva": 108640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseMovieFile_Handle"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseMovieFile_SoundHandle"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseMovieFile_SurfaceHandle"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ReturnPlaybackMode"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownMovie"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownSound"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownVideo"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_StopTimer"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4303424,
            "rva": 109120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseMovieFile_Handle"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseMovieFile_SoundHandle"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseMovieFile_SurfaceHandle"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ReturnPlaybackMode"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownMovie"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownSound"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownVideo"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_StopTimer"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4303424,
            "rva": 109120,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseMovieFile_Handle"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseMovieFile_SoundHandle"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_CloseMovieFile_SurfaceHandle"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ReturnPlaybackMode"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownMovie"
                },
                "instr_offset": 41,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownSound"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownVideo"
                },
                "instr_offset": 31,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_StopTimer"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Video_CloseMovieFile_Handle"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_CloseMovieFile_SurfaceHandle"
            },
            "instr_offset": 26,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_CloseMovieFile_SoundHandle"
            },
            "instr_offset": 16,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 68",
          "match_offset": 0
        },
        "docs": "Stops the active movie timer, restores playback mode, shuts down sound/video/movie handles, and returns 1.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 267,
          "symbol_index": 267,
          "accessor": "DTTR_PCDOGS_F_Video_CloseMovieFile",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_CLOSE_MOVIE_FILE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_CLOSE_MOVIE_FILE"
        }
      }
    },
    "Video_CloseMovieFile_Handle": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802588,
            "rva": 608284,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810924,
            "rva": 616620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810908,
            "rva": 616604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_CloseMovieFile"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Video_CloseMovieFile",
          "instr_offset": 0,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Winplay/RPL movie handle initialized by Movie_InitMovie and shut down by Movie_ShutdownMovie.",
        "sdk": {
          "id": 478,
          "symbol_index": 478,
          "accessor": "DTTR_PCDOGS_D_Video_CloseMovieFile_Handle",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_CLOSE_MOVIE_FILE_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_CLOSE_MOVIE_FILE_HANDLE"
        }
      }
    },
    "Video_CloseMovieFile_SoundHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802596,
            "rva": 608292,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810932,
            "rva": 616628,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810916,
            "rva": 616612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_CloseMovieFile"
            },
            "instr_offset": 16,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Video_CloseMovieFile",
          "instr_offset": 16,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Winplay sound handle initialized by Movie_InitSound and passed into movie playback.",
        "sdk": {
          "id": 480,
          "symbol_index": 480,
          "accessor": "DTTR_PCDOGS_D_Video_CloseMovieFile_SoundHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_CLOSE_MOVIE_FILE_SOUND_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_CLOSE_MOVIE_FILE_SOUND_HANDLE"
        }
      }
    },
    "Video_CloseMovieFile_SurfaceHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 4802592,
            "rva": 608288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4810928,
            "rva": 616624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4810912,
            "rva": 616608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 26,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_CloseMovieFile"
            },
            "instr_offset": 26,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Video_CloseMovieFile",
          "instr_offset": 26,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Winplay video surface handle initialized by Movie_InitVideo, prepared for playback, and shut down by Movie_ShutdownVideo.",
        "sdk": {
          "id": 479,
          "symbol_index": 479,
          "accessor": "DTTR_PCDOGS_D_Video_CloseMovieFile_SurfaceHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_CLOSE_MOVIE_FILE_SURFACE_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_CLOSE_MOVIE_FILE_SURFACE_HANDLE"
        }
      }
    },
    "Video_GetMovieCurrentFrame": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480612,
            "rva": 286308,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 200,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "08 D5 A8 01 FF 25 ?? ??",
          "match_offset": -8
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 645,
          "symbol_index": 645,
          "accessor": "DTTR_PCDOGS_F_Video_GetMovieCurrentFrame",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_GET_MOVIE_CURRENT_FRAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_GET_MOVIE_CURRENT_FRAME"
        }
      }
    },
    "Video_GetMovieSoundChannels": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480594,
            "rva": 286290,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488434,
            "rva": 294130,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488210,
            "rva": 293906,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? ?? 1C 00 00 00 03 FF FF 80 00 04 00 00 FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ??",
          "match_offset": 34
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 642,
          "symbol_index": 642,
          "accessor": "DTTR_PCDOGS_F_Video_GetMovieSoundChannels",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_GET_MOVIE_SOUND_CHANNELS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_GET_MOVIE_SOUND_CHANNELS"
        }
      }
    },
    "Video_GetMovieSoundPrecision": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480588,
            "rva": 286284,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488428,
            "rva": 294124,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488204,
            "rva": 293900,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? ?? 1C 00 00 00 03 FF FF 80 00 04 00 00 FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ??",
          "match_offset": 28
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 641,
          "symbol_index": 641,
          "accessor": "DTTR_PCDOGS_F_Video_GetMovieSoundPrecision",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_GET_MOVIE_SOUND_PRECISION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_GET_MOVIE_SOUND_PRECISION"
        }
      }
    },
    "Video_GetMovieSoundRate": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480582,
            "rva": 286278,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 326,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488422,
            "rva": 294118,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 326,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488198,
            "rva": 293894,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 326,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? ?? 1C 00 00 00 03 FF FF 80 00 04 00 00 FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ??",
          "match_offset": 22
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 640,
          "symbol_index": 640,
          "accessor": "DTTR_PCDOGS_F_Video_GetMovieSoundRate",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_GET_MOVIE_SOUND_RATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_GET_MOVIE_SOUND_RATE"
        }
      }
    },
    "Video_GetMovieTotalFrames": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480618,
            "rva": 286314,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488458,
            "rva": 294154,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488234,
            "rva": 293930,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? E8",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 646,
          "symbol_index": 646,
          "accessor": "DTTR_PCDOGS_F_Video_GetMovieTotalFrames",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_GET_MOVIE_TOTAL_FRAMES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_GET_MOVIE_TOTAL_FRAMES"
        }
      }
    },
    "Video_GetMovieXSize": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480600,
            "rva": 286296,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488440,
            "rva": 294136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488216,
            "rva": 293912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? ?? 1C 00 00 00 03 FF FF 80 00 04 00 00 FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ??",
          "match_offset": 40
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 643,
          "symbol_index": 643,
          "accessor": "DTTR_PCDOGS_F_Video_GetMovieXSize",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_GET_MOVIE_X_SIZE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_GET_MOVIE_X_SIZE"
        }
      }
    },
    "Video_GetMovieYSize": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480606,
            "rva": 286302,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 172,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488446,
            "rva": 294142,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 172,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488222,
            "rva": 293918,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 172,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? ?? 1C 00 00 00 03 FF FF 80 00 04 00 00 FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ??",
          "match_offset": 46
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 644,
          "symbol_index": 644,
          "accessor": "DTTR_PCDOGS_F_Video_GetMovieYSize",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_GET_MOVIE_Y_SIZE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_GET_MOVIE_Y_SIZE"
        }
      }
    },
    "Video_InitPlayer": {
      "function": {
        "analysis": {
          "en": {
            "address": 4302864,
            "rva": 108560,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitPlayer_ErrorCode"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitSoundSystem"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitVideoSystem"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4303344,
            "rva": 109040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitPlayer_ErrorCode"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitSoundSystem"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitVideoSystem"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4303344,
            "rva": 109040,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitPlayer_ErrorCode"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitSoundSystem"
                },
                "instr_offset": 35,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitVideoSystem"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "hwnd",
              "type": "HWND"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Video_InitPlayer_ErrorCode"
            },
            "instr_offset": 16,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? 33 C0 5E C3 56",
          "match_offset": -27
        },
        "docs": "Initializes the video playback subsystem, then the sound playback subsystem, for the supplied window handle; shuts both systems down and returns 0 on either initialization failure.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 266,
          "symbol_index": 266,
          "accessor": "DTTR_PCDOGS_F_Video_InitPlayer",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_INIT_PLAYER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_INIT_PLAYER"
        }
      }
    },
    "Video_InitPlayer_ErrorCode": {
      "data": {
        "analysis": {
          "en": {
            "address": 26908000,
            "rva": 22713696,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 26919264,
            "rva": 22724960,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 26918688,
            "rva": 22724384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 16,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_InitPlayer"
            },
            "instr_offset": 16,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Video_InitPlayer",
          "instr_offset": 16,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Last winplay video/sound/movie initialization or playback status code.",
        "sdk": {
          "id": 862,
          "symbol_index": 862,
          "accessor": "DTTR_PCDOGS_D_Video_InitPlayer_ErrorCode",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_INIT_PLAYER_ERROR_CODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_INIT_PLAYER_ERROR_CODE"
        }
      }
    },
    "Video_InitializeAVIPlayer": {
      "function": {
        "analysis": {
          "en": {
            "address": 4257200,
            "rva": 62896,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_Initialized"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_Initialized"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_MovieCounter"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_WindowHandle"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_MCI_OpenAVIVideo"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4257680,
            "rva": 63376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_Initialized"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_Initialized"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_MovieCounter"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_WindowHandle"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_MCI_OpenAVIVideo"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4257680,
            "rva": 63376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_Initialized"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_Initialized"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_MovieCounter"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_InitializeAVIPlayer_WindowHandle"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_MCI_OpenAVIVideo"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "String_ParseAtoi"
                },
                "instr_offset": 44,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "window_handle_text",
              "type": "char*",
              "docs": "Decimal HWND string passed by Video_PlayMovieIntro and parsed into avi_window_handle on successful MCI AVI initialization."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Video_MCI_OpenAVIVideo"
            },
            "instr_offset": 6,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_InitializeAVIPlayer_Initialized"
            },
            "instr_offset": 32,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_InitializeAVIPlayer_Initialized"
            },
            "instr_offset": 54,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_InitializeAVIPlayer_WindowHandle"
            },
            "instr_offset": 49,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_InitializeAVIPlayer_MovieCounter"
            },
            "instr_offset": 11,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "6A 00 6A 00 6A 00 68 ?? ?? ?? ?? C7",
          "match_offset": 0
        },
        "docs": "Initializes the Windows MCI AVI video subsystem by resetting avi_movie_counter, sending the global open-avivideo command, and storing the success flag in avi_player_initialized. On success it parses window_handle_text into retained AVI window-handle state.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 118,
          "symbol_index": 118,
          "accessor": "DTTR_PCDOGS_F_Video_InitializeAVIPlayer",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_INITIALIZE_AVI_PLAYER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_INITIALIZE_AVI_PLAYER"
        }
      }
    },
    "Video_InitializeAVIPlayer_Initialized": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551268,
            "rva": 356964,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559604,
            "rva": 365300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559588,
            "rva": 365284,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 32,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 54,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_InitializeAVIPlayer"
            },
            "instr_offset": 32,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Video_InitializeAVIPlayer"
            },
            "instr_offset": 54,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 352,
          "symbol_index": 352,
          "accessor": "DTTR_PCDOGS_D_Video_InitializeAVIPlayer_Initialized",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_INITIALIZE_AVI_PLAYER_INITIALIZED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_INITIALIZE_AVI_PLAYER_INITIALIZED"
        }
      }
    },
    "Video_InitializeAVIPlayer_MovieCounter": {
      "data": {
        "analysis": {
          "en": {
            "address": 4551272,
            "rva": 356968,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4559608,
            "rva": 365304,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4559592,
            "rva": 365288,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_InitializeAVIPlayer"
            },
            "instr_offset": 11,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 354,
          "symbol_index": 354,
          "accessor": "DTTR_PCDOGS_D_Video_InitializeAVIPlayer_MovieCounter",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_INITIALIZE_AVI_PLAYER_MOVIE_COUNTER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_INITIALIZE_AVI_PLAYER_MOVIE_COUNTER"
        }
      }
    },
    "Video_InitializeAVIPlayer_WindowHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 27830676,
            "rva": 23636372,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27841940,
            "rva": 23647636,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27841364,
            "rva": 23647060,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 49,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_InitializeAVIPlayer"
            },
            "instr_offset": 49,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 353,
          "symbol_index": 353,
          "accessor": "DTTR_PCDOGS_D_Video_InitializeAVIPlayer_WindowHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_INITIALIZE_AVI_PLAYER_WINDOW_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_INITIALIZE_AVI_PLAYER_WINDOW_HANDLE"
        }
      }
    },
    "Video_IsAVIPlaying": {
      "function": {
        "analysis": {
          "en": {
            "address": 4257488,
            "rva": 63184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_IsAVIPlaying_MCIStatusMode"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_IsAVIPlaying_MCIStatusPlaying"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4257968,
            "rva": 63664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_IsAVIPlaying_MCIStatusMode"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_IsAVIPlaying_MCIStatusPlaying"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4257968,
            "rva": 63664,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_IsAVIPlaying_MCIStatusMode"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_IsAVIPlaying_MCIStatusPlaying"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Video_IsAVIPlaying_MCIStatusPlaying"
            },
            "instr_offset": 51,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_IsAVIPlaying_MCIStatusMode"
            },
            "instr_offset": 8,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "83 EC 50 68 ?? ?? ?? ?? 68 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 123,
          "symbol_index": 123,
          "accessor": "DTTR_PCDOGS_F_Video_IsAVIPlaying",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_IS_AVI_PLAYING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_IS_AVI_PLAYING"
        }
      }
    },
    "Video_IsAVIPlaying_MCIStatusMode": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515024,
            "rva": 320720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523216,
            "rva": 328912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523216,
            "rva": 328912,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 8,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_IsAVIPlaying"
            },
            "instr_offset": 8,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 121,
          "symbol_index": 121,
          "accessor": "DTTR_PCDOGS_D_Video_IsAVIPlaying_MCIStatusMode",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_IS_AVI_PLAYING_MCI_STATUS_MODE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_IS_AVI_PLAYING_MCI_STATUS_MODE"
        }
      }
    },
    "Video_IsAVIPlaying_MCIStatusPlaying": {
      "data": {
        "analysis": {
          "en": {
            "address": 4515016,
            "rva": 320712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523208,
            "rva": 328904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523208,
            "rva": 328904,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_IsAVIPlaying"
            },
            "instr_offset": 51,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 120,
          "symbol_index": 120,
          "accessor": "DTTR_PCDOGS_D_Video_IsAVIPlaying_MCIStatusPlaying",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_IS_AVI_PLAYING_MCI_STATUS_PLAYING",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_IS_AVI_PLAYING_MCI_STATUS_PLAYING"
        }
      }
    },
    "Video_MCI_OpenAVIVideo": {
      "data": {
        "analysis": {
          "en": {
            "address": 4514912,
            "rva": 320608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenAVIFile"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523104,
            "rva": 328800,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenAVIFile"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523104,
            "rva": 328800,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenAVIFile"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_InitializeAVIPlayer"
            },
            "instr_offset": 6,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenAVIFile"
            },
            "instr_offset": 51,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "char",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Video_InitializeAVIPlayer",
          "instr_offset": 6,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "NUL-terminated MCI command fragment \"open\" used by AVI/movie playback setup.",
        "sdk": {
          "id": 115,
          "symbol_index": 115,
          "accessor": "DTTR_PCDOGS_D_Video_MCI_OpenAVIVideo",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_MCI_OPEN_AVI_VIDEO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_MCI_OPEN_AVI_VIDEO"
        }
      }
    },
    "Video_MovieFileNamesAndPathPrefix": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4443567,
            "rva": 249263,
            "image_base": 4194304
          },
          "eu": {
            "address": 4448815,
            "rva": 254511,
            "image_base": 4194304
          },
          "sc": {
            "address": 4448783,
            "rva": 254479,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "8B 04 B5 ?? ?? ?? ?? 50 68"
      }
    },
    "Video_OpenAVIFile": {
      "function": {
        "analysis": {
          "en": {
            "address": 4257296,
            "rva": 62992,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_MCI_OpenAVIVideo"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenAVIFile_MCIMovieID"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 206,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4257776,
            "rva": 63472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_MCI_OpenAVIVideo"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenAVIFile_MCIMovieID"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 206,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4257776,
            "rva": 63472,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_MCI_OpenAVIVideo"
                },
                "instr_offset": 51,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenAVIFile_MCIMovieID"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 206,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "file_handle",
              "type": "int32_t"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "placeholder"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Video_MCI_OpenAVIVideo"
            },
            "instr_offset": 51,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenAVIFile_MCIMovieID"
            },
            "instr_offset": 21,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 85 C0 75 ?? 33",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 120,
          "symbol_index": 120,
          "accessor": "DTTR_PCDOGS_F_Video_OpenAVIFile",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_OPEN_AVI_FILE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_OPEN_AVI_FILE"
        }
      }
    },
    "Video_OpenAVIFile_MCIMovieID": {
      "data": {
        "analysis": {
          "en": {
            "address": 4514976,
            "rva": 320672,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenAVIFile"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523168,
            "rva": 328864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenAVIFile"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523168,
            "rva": 328864,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenAVIFile"
                },
                "instr_offset": 21,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenAVIFile"
            },
            "instr_offset": 21,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 117,
          "symbol_index": 117,
          "accessor": "DTTR_PCDOGS_D_Video_OpenAVIFile_MCIMovieID",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_AVI_FILE_MCI_MOVIE_ID",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_AVI_FILE_MCI_MOVIE_ID"
        }
      }
    },
    "Video_OpenMovieFile": {
      "function": {
        "analysis": {
          "en": {
            "address": 4303008,
            "rva": 108704,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_Zero"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectBottom"
                },
                "instr_offset": 75,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectLeft"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectRight"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectTop"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectBottom"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectLeft"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectRight"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectTop"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_DefaultScreenHeight"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_DefaultScreenWidth"
                },
                "instr_offset": 44,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_PlaybackState"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitMovie"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitMoviePlayback"
                },
                "instr_offset": 523,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitPlaybackMode"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitSound"
                },
                "instr_offset": 458,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitVideo"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_MapVideo"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_StartTimer"
                },
                "instr_offset": 568,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundChannels"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundChannels"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundRate"
                },
                "instr_offset": 326,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundRate"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieXSize"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieYSize"
                },
                "instr_offset": 172,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_SetMovieSyncAdjust"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4303488,
            "rva": 109184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_Zero"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectBottom"
                },
                "instr_offset": 75,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectLeft"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectRight"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectTop"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectBottom"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectLeft"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectRight"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectTop"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_DefaultScreenHeight"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_DefaultScreenWidth"
                },
                "instr_offset": 44,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_PlaybackState"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitMovie"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitMoviePlayback"
                },
                "instr_offset": 523,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitPlaybackMode"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitSound"
                },
                "instr_offset": 458,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitVideo"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_MapVideo"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_StartTimer"
                },
                "instr_offset": 568,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundChannels"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundChannels"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundRate"
                },
                "instr_offset": 326,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundRate"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieXSize"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieYSize"
                },
                "instr_offset": 172,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_SetMovieSyncAdjust"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4303488,
            "rva": 109184,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Math_Zero"
                },
                "instr_offset": 27,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectBottom"
                },
                "instr_offset": 75,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectLeft"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectRight"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_AltRectTop"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectBottom"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectLeft"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectRight"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_CurrentRectTop"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_DefaultScreenHeight"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_DefaultScreenWidth"
                },
                "instr_offset": 44,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_OpenMovieFile_PlaybackState"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitMovie"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitMoviePlayback"
                },
                "instr_offset": 523,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitPlaybackMode"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitSound"
                },
                "instr_offset": 458,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_InitVideo"
                },
                "instr_offset": 209,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_MapVideo"
                },
                "instr_offset": 557,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_StartTimer"
                },
                "instr_offset": 568,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundChannels"
                },
                "instr_offset": 281,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundChannels"
                },
                "instr_offset": 382,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 303,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 351,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 403,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundPrecision"
                },
                "instr_offset": 427,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundRate"
                },
                "instr_offset": 326,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieSoundRate"
                },
                "instr_offset": 366,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieXSize"
                },
                "instr_offset": 188,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieYSize"
                },
                "instr_offset": 172,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_SetMovieSyncAdjust"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "hwnd",
              "type": "HWND"
            },
            {
              "name": "movie_path",
              "type": "const char*"
            },
            {
              "name": "unused_ddraw",
              "type": "DDraw_IDirectDraw7*"
            },
            {
              "name": "use_alt_video_rect",
              "type": "char"
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Math_Zero"
            },
            "instr_offset": 27,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenMovieFile_PlaybackState"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenMovieFile_DefaultScreenWidth"
            },
            "instr_offset": 44,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenMovieFile_DefaultScreenHeight"
            },
            "instr_offset": 33,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenMovieFile_CurrentRectLeft"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenMovieFile_CurrentRectTop"
            },
            "instr_offset": 5,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenMovieFile_CurrentRectRight"
            },
            "instr_offset": 11,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenMovieFile_CurrentRectBottom"
            },
            "instr_offset": 22,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenMovieFile_AltRectLeft"
            },
            "instr_offset": 52,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenMovieFile_AltRectTop"
            },
            "instr_offset": 58,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenMovieFile_AltRectRight"
            },
            "instr_offset": 64,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_OpenMovieFile_AltRectBottom"
            },
            "instr_offset": 75,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? 8A 44 24 10 3C",
          "match_offset": -35
        },
        "docs": "Opens an RPL/movie file, selects the default or alternate video rectangle, initializes movie/video/playback/sound state, maps video, and starts the playback timer; the wrapper preserves the DirectDraw ABI argument.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 268,
          "symbol_index": 268,
          "accessor": "DTTR_PCDOGS_F_Video_OpenMovieFile",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_OPEN_MOVIE_FILE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_OPEN_MOVIE_FILE"
        }
      }
    },
    "Video_OpenMovieFile_AltRectBottom": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525732,
            "rva": 331428,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 75,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533924,
            "rva": 339620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 75,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533924,
            "rva": 339620,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 75,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 75,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 209,
          "symbol_index": 209,
          "accessor": "DTTR_PCDOGS_D_Video_OpenMovieFile_AltRectBottom",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_MOVIE_FILE_ALT_RECT_BOTTOM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_MOVIE_FILE_ALT_RECT_BOTTOM"
        }
      }
    },
    "Video_OpenMovieFile_AltRectLeft": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525720,
            "rva": 331416,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533912,
            "rva": 339608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533912,
            "rva": 339608,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 52,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 52,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 206,
          "symbol_index": 206,
          "accessor": "DTTR_PCDOGS_D_Video_OpenMovieFile_AltRectLeft",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_MOVIE_FILE_ALT_RECT_LEFT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_MOVIE_FILE_ALT_RECT_LEFT"
        }
      }
    },
    "Video_OpenMovieFile_AltRectRight": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525728,
            "rva": 331424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533920,
            "rva": 339616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533920,
            "rva": 339616,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 64,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 64,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 208,
          "symbol_index": 208,
          "accessor": "DTTR_PCDOGS_D_Video_OpenMovieFile_AltRectRight",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_MOVIE_FILE_ALT_RECT_RIGHT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_MOVIE_FILE_ALT_RECT_RIGHT"
        }
      }
    },
    "Video_OpenMovieFile_AltRectTop": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525724,
            "rva": 331420,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533916,
            "rva": 339612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533916,
            "rva": 339612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 58,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 207,
          "symbol_index": 207,
          "accessor": "DTTR_PCDOGS_D_Video_OpenMovieFile_AltRectTop",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_MOVIE_FILE_ALT_RECT_TOP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_MOVIE_FILE_ALT_RECT_TOP"
        }
      }
    },
    "Video_OpenMovieFile_CurrentRectBottom": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525716,
            "rva": 331412,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533908,
            "rva": 339604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533908,
            "rva": 339604,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 22,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 22,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 205,
          "symbol_index": 205,
          "accessor": "DTTR_PCDOGS_D_Video_OpenMovieFile_CurrentRectBottom",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_MOVIE_FILE_CURRENT_RECT_BOTTOM",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_MOVIE_FILE_CURRENT_RECT_BOTTOM"
        }
      }
    },
    "Video_OpenMovieFile_CurrentRectLeft": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525704,
            "rva": 331400,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533896,
            "rva": 339592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533896,
            "rva": 339592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 0,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 202,
          "symbol_index": 202,
          "accessor": "DTTR_PCDOGS_D_Video_OpenMovieFile_CurrentRectLeft",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_MOVIE_FILE_CURRENT_RECT_LEFT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_MOVIE_FILE_CURRENT_RECT_LEFT"
        }
      }
    },
    "Video_OpenMovieFile_CurrentRectRight": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525712,
            "rva": 331408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533904,
            "rva": 339600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533904,
            "rva": 339600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 11,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 11,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 204,
          "symbol_index": 204,
          "accessor": "DTTR_PCDOGS_D_Video_OpenMovieFile_CurrentRectRight",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_MOVIE_FILE_CURRENT_RECT_RIGHT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_MOVIE_FILE_CURRENT_RECT_RIGHT"
        }
      }
    },
    "Video_OpenMovieFile_CurrentRectTop": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525708,
            "rva": 331404,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533900,
            "rva": 339596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533900,
            "rva": 339596,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 5,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 203,
          "symbol_index": 203,
          "accessor": "DTTR_PCDOGS_D_Video_OpenMovieFile_CurrentRectTop",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_MOVIE_FILE_CURRENT_RECT_TOP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_MOVIE_FILE_CURRENT_RECT_TOP"
        }
      }
    },
    "Video_OpenMovieFile_DefaultScreenHeight": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525700,
            "rva": 331396,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533892,
            "rva": 339588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533892,
            "rva": 339588,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 33,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 201,
          "symbol_index": 201,
          "accessor": "DTTR_PCDOGS_D_Video_OpenMovieFile_DefaultScreenHeight",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_MOVIE_FILE_DEFAULT_SCREEN_HEIGHT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_MOVIE_FILE_DEFAULT_SCREEN_HEIGHT"
        }
      }
    },
    "Video_OpenMovieFile_DefaultScreenWidth": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525696,
            "rva": 331392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 44,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533888,
            "rva": 339584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 44,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533888,
            "rva": 339584,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 44,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 44,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 200,
          "symbol_index": 200,
          "accessor": "DTTR_PCDOGS_D_Video_OpenMovieFile_DefaultScreenWidth",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_MOVIE_FILE_DEFAULT_SCREEN_WIDTH",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_MOVIE_FILE_DEFAULT_SCREEN_WIDTH"
        }
      }
    },
    "Video_OpenMovieFile_PlaybackState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4525688,
            "rva": 331384,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4533880,
            "rva": 339576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4533880,
            "rva": 339576,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 17,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_OpenMovieFile"
            },
            "instr_offset": 17,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 199,
          "symbol_index": 199,
          "accessor": "DTTR_PCDOGS_D_Video_OpenMovieFile_PlaybackState",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_OPEN_MOVIE_FILE_PLAYBACK_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_OPEN_MOVIE_FILE_PLAYBACK_STATE"
        }
      }
    },
    "Video_PlayAVIFullscreen": {
      "function": {
        "analysis": {
          "en": {
            "address": 4257440,
            "rva": 63136,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayAVIFullscreen_MCIPlayFullscreen"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 239,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4257920,
            "rva": 63616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayAVIFullscreen_MCIPlayFullscreen"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 239,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4257920,
            "rva": 63616,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayAVIFullscreen_MCIPlayFullscreen"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 239,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Video_PlayAVIFullscreen_MCIPlayFullscreen"
            },
            "instr_offset": 5,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0C 6A 00 6A 00 6A 00 68 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? F7",
          "match_offset": -23
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 122,
          "symbol_index": 122,
          "accessor": "DTTR_PCDOGS_F_Video_PlayAVIFullscreen",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_PLAY_AVI_FULLSCREEN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_PLAY_AVI_FULLSCREEN"
        }
      }
    },
    "Video_PlayAVIFullscreen_MCIPlayFullscreen": {
      "data": {
        "analysis": {
          "en": {
            "address": 4514996,
            "rva": 320692,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayAVIFullscreen"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523188,
            "rva": 328884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayAVIFullscreen"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523188,
            "rva": 328884,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayAVIFullscreen"
                },
                "instr_offset": 5,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_PlayAVIFullscreen"
            },
            "instr_offset": 5,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 119,
          "symbol_index": 119,
          "accessor": "DTTR_PCDOGS_D_Video_PlayAVIFullscreen_MCIPlayFullscreen",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_PLAY_AVI_FULLSCREEN_MCI_PLAY_FULLSCREEN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_PLAY_AVI_FULLSCREEN_MCI_PLAY_FULLSCREEN"
        }
      }
    },
    "Video_PlayMovieFile": {
      "function": {
        "analysis": {
          "en": {
            "address": 4443456,
            "rva": 249152,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieFile_SkipRequested"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4448704,
            "rva": 254400,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieFile_SkipRequested"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4448672,
            "rva": 254368,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieFile_SkipRequested"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 53,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_CloseMovieFile"
                },
                "instr_offset": 70,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 24,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "BOOL",
          "params": [
            {
              "name": "movie_path",
              "type": "char const*",
              "docs": "Fully formatted movie path passed to Video_OpenMovieFile."
            },
            {
              "name": "use_alt_video_rect",
              "type": "char",
              "docs": "Non-zero selects the alternate video rectangle in Video_OpenMovieFile."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Video_PlayMovieFile_SkipRequested"
            },
            "instr_offset": 60,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "0D ?? ?? ?? ?? 8B 54 24 04 56 50 A1 ?? ?? ?? ?? 51 52 50 E8",
          "match_offset": -5
        },
        "docs": "Open and play the supplied movie path; closes playback on normal stop and requests shutdown on skip/Alt+F4 paths.",
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 10,
          "symbol_index": 10,
          "accessor": "DTTR_PCDOGS_F_Video_PlayMovieFile",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_PLAY_MOVIE_FILE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_PLAY_MOVIE_FILE"
        }
      }
    },
    "Video_PlayMovieFile_SkipRequested": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835624,
            "rva": 641320,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844520,
            "rva": 650216,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844504,
            "rva": 650200,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 60,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_PlayMovieFile"
            },
            "instr_offset": 60,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Video_PlayMovieFile",
          "instr_offset": 60,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Movie playback skip/shutdown flag cleared by Video_PlayMovieIntro and set by Video_PlayMovieFile when the user skips or closes playback.",
        "sdk": {
          "id": 675,
          "symbol_index": 675,
          "accessor": "DTTR_PCDOGS_D_Video_PlayMovieFile_SkipRequested",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_PLAY_MOVIE_FILE_SKIP_REQUESTED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_PLAY_MOVIE_FILE_SKIP_REQUESTED"
        }
      }
    },
    "Video_PlayMovieIntro": {
      "function": {
        "analysis": {
          "en": {
            "address": 4443552,
            "rva": 249248,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_AVIPlaybackStarted"
                },
                "instr_offset": 274,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_ConfigEndSentinel"
                },
                "instr_offset": 142,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_ErrOpen"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_ErrPlay"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_FileNames"
                },
                "instr_offset": 15,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_PathPrefix"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_StringConcat3"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_CloseAVIFile"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_OpenAVIFile"
                },
                "instr_offset": 206,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayAVIFullscreen"
                },
                "instr_offset": 239,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownAVIPlayer"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownAVIPlayer"
                },
                "instr_offset": 267,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 422,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 446,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 486,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4448800,
            "rva": 254496,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_AVIPlaybackStarted"
                },
                "instr_offset": 274,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_ConfigEndSentinel"
                },
                "instr_offset": 142,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_ErrOpen"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_ErrPlay"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_FileNames"
                },
                "instr_offset": 15,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_PathPrefix"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_StringConcat3"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_CloseAVIFile"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_OpenAVIFile"
                },
                "instr_offset": 206,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayAVIFullscreen"
                },
                "instr_offset": 239,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownAVIPlayer"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownAVIPlayer"
                },
                "instr_offset": 267,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 431,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4448768,
            "rva": 254464,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_AVIPlaybackStarted"
                },
                "instr_offset": 274,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_ConfigEndSentinel"
                },
                "instr_offset": 142,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_ErrOpen"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_ErrPlay"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_FileNames"
                },
                "instr_offset": 15,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_PathPrefix"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieIntro_StringConcat3"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 191,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 224,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_CloseAVIFile"
                },
                "instr_offset": 262,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 79,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_InitializeAVIPlayer"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 289,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_IsAVIPlaying"
                },
                "instr_offset": 313,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_OpenAVIFile"
                },
                "instr_offset": 206,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayAVIFullscreen"
                },
                "instr_offset": 239,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 99,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownAVIPlayer"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownAVIPlayer"
                },
                "instr_offset": 267,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_ShutdownPlayerSystems"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 431,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "movie_index",
              "type": "int32_t",
              "docs": "Index into the four-entry startup movie filename/type tables."
            }
          ],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Video_PlayMovieIntro_FileNames"
            },
            "instr_offset": 15,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_PlayMovieIntro_PathPrefix"
            },
            "instr_offset": 23,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_PlayMovieIntro_ErrPlay"
            },
            "instr_offset": 249,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_PlayMovieIntro_ErrOpen"
            },
            "instr_offset": 186,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_PlayMovieIntro_StringConcat3"
            },
            "instr_offset": 33,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_PlayMovieIntro_AVIPlaybackStarted"
            },
            "instr_offset": 274,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Video_PlayMovieIntro_ConfigEndSentinel"
            },
            "instr_offset": 142,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "56 8B 74 24 08 C7 05 ??",
          "match_offset": 0
        },
        "docs": "Build and play one startup movie path selected by movieIndex; movie 0 initializes the player and movie 2 selects the alternate video rectangle.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 11,
          "symbol_index": 11,
          "accessor": "DTTR_PCDOGS_F_Video_PlayMovieIntro",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_PLAY_MOVIE_INTRO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_PLAY_MOVIE_INTRO"
        }
      }
    },
    "Video_PlayMovieIntro_AVIPlaybackStarted": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835628,
            "rva": 641324,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 274,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844524,
            "rva": 650220,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 274,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844508,
            "rva": 650204,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 274,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_PlayMovieIntro"
            },
            "instr_offset": 274,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Video_PlayMovieIntro",
          "instr_offset": 274,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "AVI playback-start latch toggled by Video_PlayMovieIntro around Video_IsAVIPlaying during the AVI fallback path.",
        "sdk": {
          "id": 676,
          "symbol_index": 676,
          "accessor": "DTTR_PCDOGS_D_Video_PlayMovieIntro_AVIPlaybackStarted",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_PLAY_MOVIE_INTRO_AVI_PLAYBACK_STARTED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_PLAY_MOVIE_INTRO_AVI_PLAYBACK_STARTED"
        }
      }
    },
    "Video_PlayMovieIntro_ConfigEndSentinel": {
      "data": {
        "analysis": {
          "en": {
            "address": 6507084,
            "rva": 2312780,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 142,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518348,
            "rva": 2324044,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 142,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517772,
            "rva": 2323468,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 142,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_PlayMovieIntro"
            },
            "instr_offset": 142,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Video_PlayMovieIntro",
          "instr_offset": 142,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Post-config-block dword used as the exclusive end sentinel for pcdogs.ini control binding loops and zeroed on the AVI movie path.",
        "sdk": {
          "id": 810,
          "symbol_index": 810,
          "accessor": "DTTR_PCDOGS_D_Video_PlayMovieIntro_ConfigEndSentinel",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_PLAY_MOVIE_INTRO_CONFIG_END_SENTINEL",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_PLAY_MOVIE_INTRO_CONFIG_END_SENTINEL"
        }
      }
    },
    "Video_PlayMovieIntro_ErrOpen": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526740,
            "rva": 332436,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534936,
            "rva": 340632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534936,
            "rva": 340632,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_PlayMovieIntro"
            },
            "instr_offset": 186,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 266,
          "symbol_index": 266,
          "accessor": "DTTR_PCDOGS_D_Video_PlayMovieIntro_ErrOpen",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_PLAY_MOVIE_INTRO_ERR_OPEN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_PLAY_MOVIE_INTRO_ERR_OPEN"
        }
      }
    },
    "Video_PlayMovieIntro_ErrPlay": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526720,
            "rva": 332416,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534916,
            "rva": 340612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534916,
            "rva": 340612,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 249,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_PlayMovieIntro"
            },
            "instr_offset": 249,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 265,
          "symbol_index": 265,
          "accessor": "DTTR_PCDOGS_D_Video_PlayMovieIntro_ErrPlay",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_PLAY_MOVIE_INTRO_ERR_PLAY",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_PLAY_MOVIE_INTRO_ERR_PLAY"
        }
      }
    },
    "Video_PlayMovieIntro_FileNames": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526632,
            "rva": 332328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 15,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534828,
            "rva": 340524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 15,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534828,
            "rva": 340524,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 15,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_PlayMovieIntro"
            },
            "instr_offset": 15,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "char*[4]",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Video_PlayMovieIntro",
          "instr_offset": 15,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First entry/base of the four-entry movie filename pointer table used by intro and movie playback routines.",
        "sdk": {
          "id": 8,
          "symbol_index": 8,
          "accessor": "DTTR_PCDOGS_D_Video_PlayMovieIntro_FileNames",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_PLAY_MOVIE_INTRO_FILE_NAMES",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_PLAY_MOVIE_INTRO_FILE_NAMES"
        }
      }
    },
    "Video_PlayMovieIntro_PathPrefix": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526652,
            "rva": 332348,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534848,
            "rva": 340544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534848,
            "rva": 340544,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 23,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_PlayMovieIntro"
            },
            "instr_offset": 23,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "char",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Video_PlayMovieIntro",
          "instr_offset": 23,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "First byte/base of the NUL-terminated data/movies path prefix used by movie-loading routines.",
        "sdk": {
          "id": 9,
          "symbol_index": 9,
          "accessor": "DTTR_PCDOGS_D_Video_PlayMovieIntro_PathPrefix",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_PLAY_MOVIE_INTRO_PATH_PREFIX",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_PLAY_MOVIE_INTRO_PATH_PREFIX"
        }
      }
    },
    "Video_PlayMovieIntro_StringConcat3": {
      "data": {
        "analysis": {
          "en": {
            "address": 4526764,
            "rva": 332460,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4534960,
            "rva": 340656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4534960,
            "rva": 340656,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 33,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_PlayMovieIntro"
            },
            "instr_offset": 33,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 267,
          "symbol_index": 267,
          "accessor": "DTTR_PCDOGS_D_Video_PlayMovieIntro_StringConcat3",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_PLAY_MOVIE_INTRO_STRING_CONCAT3",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_PLAY_MOVIE_INTRO_STRING_CONCAT3"
        }
      }
    },
    "Video_PlayMovieLoop": {
      "function": {
        "analysis": {
          "en": {
            "address": 4303600,
            "rva": 109296,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieLoop_GetAsyncKeyStateThunk"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_PlayFrame"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieCurrentFrame"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieCurrentFrame"
                },
                "instr_offset": 200,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieTotalFrames"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieTotalFrames"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4304080,
            "rva": 109776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieLoop_GetAsyncKeyStateThunk"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_PlayFrame"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieTotalFrames"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieTotalFrames"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4304080,
            "rva": 109776,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_PlayMovieLoop_GetAsyncKeyStateThunk"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ReadGamepad"
                },
                "instr_offset": 121,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_PlayFrame"
                },
                "instr_offset": 170,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieTotalFrames"
                },
                "instr_offset": 11,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_GetMovieTotalFrames"
                },
                "instr_offset": 186,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 36,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Video_PlayMovieLoop_GetAsyncKeyStateThunk"
            },
            "instr_offset": 41,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? 83 EC 0C 53",
          "match_offset": 0
        },
        "docs": "Runs movie playback until the movie ends, an error or joystick input occurs, or ESC/ENTER/Alt+F4 is pressed; returns 1 for normal/enter/joystick stop, 2 for ESC, and 3 for Alt+F4.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 2,
          "symbol_index": 2,
          "accessor": "DTTR_PCDOGS_F_Video_PlayMovieLoop",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_PLAY_MOVIE_LOOP",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_PLAY_MOVIE_LOOP"
        }
      }
    },
    "Video_PlayMovieLoop_GetAsyncKeyStateThunk": {
      "data": {
        "analysis": {
          "en": {
            "address": 27841508,
            "rva": 23647204,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 27849712,
            "rva": 23655408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 27849712,
            "rva": 23655408,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieLoop"
                },
                "instr_offset": 41,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_PlayMovieLoop"
            },
            "instr_offset": 41,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "void*",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Video_PlayMovieLoop",
          "instr_offset": 41,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "unknown",
        "docs": "Movie-loop input import cell for GetAsyncKeyState-style key polling; exact API binding remains unstable.",
        "sdk": {
          "id": 979,
          "symbol_index": 979,
          "accessor": "DTTR_PCDOGS_D_Video_PlayMovieLoop_GetAsyncKeyStateThunk",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_PLAY_MOVIE_LOOP_GET_ASYNC_KEY_STATE_THUNK",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_PLAY_MOVIE_LOOP_GET_ASYNC_KEY_STATE_THUNK"
        }
      }
    },
    "Video_PlaybackBuffer": {
      "type": {
        "members": [
          {
            "type": "uint8_t",
            "name": "decoder_state[396]",
            "offset": 0,
            "doc": null
          },
          {
            "type": "char",
            "name": "movie_alias[64]",
            "offset": 396,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "decode_scratch[64]",
            "offset": 460,
            "doc": null
          },
          {
            "type": "uint8_t",
            "name": "frame_pixel_data[572]",
            "offset": 524,
            "doc": null
          },
          {
            "type": "int32_t*",
            "name": "callback_context",
            "offset": 1096,
            "doc": null
          }
        ],
        "size": 1100,
        "incomplete": true,
        "unstable": true,
        "kind": "struct",
        "docs": "Movie playback buffer state, covering frame reads, input, and close/skip handling.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Video_PlaybackBuffer"
        }
      }
    },
    "Video_SetMovieSyncAdjust": {
      "function": {
        "analysis": {
          "en": {
            "address": 4480576,
            "rva": 286272,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4488416,
            "rva": 294112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4488192,
            "rva": 293888,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 498,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? ?? ?? ?? 1C 00 00 00 03 FF FF 80 00 04 00 00 FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? FF 25 ?? ?? ?? ??",
          "match_offset": 16
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 639,
          "symbol_index": 639,
          "accessor": "DTTR_PCDOGS_F_Video_SetMovieSyncAdjust",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_SET_MOVIE_SYNC_ADJUST",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_SET_MOVIE_SYNC_ADJUST"
        }
      }
    },
    "Video_ShutdownAVIPlayer": {
      "function": {
        "analysis": {
          "en": {
            "address": 4257264,
            "rva": 62960,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_ShutdownAVIPlayer_MCICloseAVIVideo"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 267,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4257744,
            "rva": 63440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_ShutdownAVIPlayer_MCICloseAVIVideo"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 267,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4257744,
            "rva": 63440,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Video_ShutdownAVIPlayer_MCICloseAVIVideo"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 232,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 267,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Video_ShutdownAVIPlayer_MCICloseAVIVideo"
            },
            "instr_offset": 6,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "?? FF 15 ?? ?? ?? ?? C7",
          "match_offset": -10
        },
        "docs": "Sends the MCI \"close avivideo\" command, clears avi_player_initialized, and returns the MCI status/result.",
        "hook": {
          "kind": "rel32",
          "patch_size": 6,
          "entry_patch_size": 6
        },
        "sdk": {
          "id": 119,
          "symbol_index": 119,
          "accessor": "DTTR_PCDOGS_F_Video_ShutdownAVIPlayer",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_SHUTDOWN_AVI_PLAYER",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_SHUTDOWN_AVI_PLAYER"
        }
      }
    },
    "Video_ShutdownAVIPlayer_MCICloseAVIVideo": {
      "data": {
        "analysis": {
          "en": {
            "address": 4514928,
            "rva": 320624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_ShutdownAVIPlayer"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4523120,
            "rva": 328816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_ShutdownAVIPlayer"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4523120,
            "rva": 328816,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_ShutdownAVIPlayer"
                },
                "instr_offset": 6,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Video_ShutdownAVIPlayer"
            },
            "instr_offset": 6,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 116,
          "symbol_index": 116,
          "accessor": "DTTR_PCDOGS_D_Video_ShutdownAVIPlayer_MCICloseAVIVideo",
          "sdk_id": "DTTR_PCDOGS_DATA_VIDEO_SHUTDOWN_AVI_PLAYER_MCI_CLOSE_AVI_VIDEO",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_VIDEO_SHUTDOWN_AVI_PLAYER_MCI_CLOSE_AVI_VIDEO"
        }
      }
    },
    "Video_ShutdownPlayerSystems": {
      "function": {
        "analysis": {
          "en": {
            "address": 4303856,
            "rva": 109552,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownVideoSystem"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4304336,
            "rva": 110032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownVideoSystem"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4304336,
            "rva": 110032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "function",
                  "name": "Movie_ShutdownVideoSystem"
                },
                "instr_offset": 0,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 25,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_InitPlayer"
                },
                "instr_offset": 52,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 134,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 226,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 266,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_OpenMovieFile"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "E8 ?? ?? ?? ?? E9 ?? ?? ?? ?? 90 90 90 90 90 90 8B",
          "match_offset": 0
        },
        "docs": "Shuts down the video playback subsystem and then the sound playback subsystem.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 269,
          "symbol_index": 269,
          "accessor": "DTTR_PCDOGS_F_Video_ShutdownPlayerSystems",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_VIDEO_SHUTDOWN_PLAYER_SYSTEMS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_VIDEO_SHUTDOWN_PLAYER_SYSTEMS"
        }
      }
    },
    "Win32_GUID": {
      "type": {
        "source_type": "GUID",
        "unstable": false,
        "kind": "type_alias",
        "docs": "Win32 GUID value used by DirectDraw import entries.",
        "sdk": {
          "name": "DTTR_PCDOGS_T_Win32_GUID"
        }
      }
    },
    "Window_GetMainHandle": {
      "function": {
        "analysis": {
          "en": {
            "address": 4449664,
            "rva": 255360,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 114,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4454928,
            "rva": 260624,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 114,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4454896,
            "rva": 260592,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 1082,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 59,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 76,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 106,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowConfirmDialog"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 58,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 75,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 103,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "UI_ShowErrorMessage"
                },
                "instr_offset": 114,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "HWND",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "A1 ?? ?? ?? ?? C3 90 90 90 90 90 90 90 90",
          "match_offset": 0
        },
        "docs": "Returns the cached main HWND used by input, D3D, and UI paths.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 530,
          "symbol_index": 530,
          "accessor": "DTTR_PCDOGS_F_Window_GetMainHandle",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_WINDOW_GET_MAIN_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_WINDOW_GET_MAIN_HANDLE"
        }
      }
    },
    "Window_MainHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506768,
            "rva": 2312464,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518032,
            "rva": 2323728,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517456,
            "rva": 2323152,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "D3D_InitDirectDrawAndDirect3D"
                },
                "instr_offset": 5,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "D3D_InitDirectDrawAndDirect3D"
            },
            "instr_offset": 5,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "HWND",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "D3D_InitDirectDrawAndDirect3D",
          "instr_offset": 5,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Cached main game HWND written by WinMain and read by DirectDraw/Direct3D, video, input, and window paths.",
        "sdk": {
          "id": 3,
          "symbol_index": 3,
          "accessor": "DTTR_PCDOGS_D_Window_MainHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_MAIN_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_MAIN_HANDLE"
        }
      }
    },
    "Window_MainHandleAnchor": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4450087,
            "rva": 255783,
            "image_base": 4194304
          },
          "eu": {
            "address": 4455360,
            "rva": 261056,
            "image_base": 4194304
          },
          "sc": {
            "address": 4455328,
            "rva": 261024,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "A1 ?? ?? ?? ?? 83 C4 08 6A 03"
      }
    },
    "Window_ProcessGameProc": {
      "function": {
        "analysis": {
          "en": {
            "address": 4449072,
            "rva": 254768,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_HighMessageDispatchTable"
                },
                "instr_offset": 361,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_HighMessageIndexTable"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_Initialized"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_LowMessageDispatchTable"
                },
                "instr_offset": 64,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_LowMessageIndexTable"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_MessageState"
                },
                "instr_offset": 16,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownBegin"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownComplete"
                },
                "instr_offset": 258,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownDestroyWindow"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownDirectInputRelease"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownKillGame"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownUninitGame"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownUninitGameInterface"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownUnloadData"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Display_ReleaseMode"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetKeyUp"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4454336,
            "rva": 260032,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_HighMessageDispatchTable"
                },
                "instr_offset": 361,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_HighMessageIndexTable"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_Initialized"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_LowMessageDispatchTable"
                },
                "instr_offset": 64,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_LowMessageIndexTable"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_MessageState"
                },
                "instr_offset": 16,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownBegin"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownComplete"
                },
                "instr_offset": 258,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownDestroyWindow"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownDirectInputRelease"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownKillGame"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownUninitGame"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownUninitGameInterface"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownUnloadData"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Display_ReleaseMode"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetKeyUp"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4454304,
            "rva": 260000,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_HighMessageDispatchTable"
                },
                "instr_offset": 361,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_HighMessageIndexTable"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_Initialized"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_LowMessageDispatchTable"
                },
                "instr_offset": 64,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_LowMessageIndexTable"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_MessageState"
                },
                "instr_offset": 16,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownBegin"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownComplete"
                },
                "instr_offset": 258,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownDestroyWindow"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownDirectInputRelease"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownKillGame"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownUninitGame"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownUninitGameInterface"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_ProcessGameProc_ShutdownUnloadData"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "DInput_ReleaseResources"
                },
                "instr_offset": 166,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 78,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 90,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 124,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 141,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 161,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 178,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 218,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Debug_Log"
                },
                "instr_offset": 263,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Display_ReleaseMode"
                },
                "instr_offset": 149,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_SetKeyUp"
                },
                "instr_offset": 376,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Menu_ShutdownResources"
                },
                "instr_offset": 129,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupFinalResourceGame"
                },
                "instr_offset": 195,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 112,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_UnloadResourceGameData"
                },
                "instr_offset": 107,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "hwnd",
              "type": "HWND"
            },
            {
              "name": "u_msg",
              "type": "uint32_t"
            },
            {
              "name": "w_param",
              "type": "uint32_t"
            },
            {
              "name": "l_param",
              "type": "int32_t"
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_Initialized"
            },
            "instr_offset": 95,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_LowMessageDispatchTable"
            },
            "instr_offset": 64,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_LowMessageIndexTable"
            },
            "instr_offset": 58,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_HighMessageDispatchTable"
            },
            "instr_offset": 361,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_HighMessageIndexTable"
            },
            "instr_offset": 355,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_ShutdownComplete"
            },
            "instr_offset": 258,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_ShutdownDestroyWindow"
            },
            "instr_offset": 207,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_ShutdownUninitGame"
            },
            "instr_offset": 173,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_ShutdownDirectInputRelease"
            },
            "instr_offset": 156,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_ShutdownKillGame"
            },
            "instr_offset": 136,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_ShutdownUninitGameInterface"
            },
            "instr_offset": 119,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_ShutdownUnloadData"
            },
            "instr_offset": 85,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_ShutdownBegin"
            },
            "instr_offset": 73,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_ProcessGameProc_MessageState"
            },
            "instr_offset": 16,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "FF 00 01 00 00 C7 05 ??",
          "match_offset": -11
        },
        "docs": "Main Win32 window procedure: handles destroy/close shutdown, key down/up messages, blocks selected system-menu commands, and defers unhandled messages to DefWindowProcA.",
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 18,
          "symbol_index": 18,
          "accessor": "DTTR_PCDOGS_F_Window_ProcessGameProc",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_WINDOW_PROCESS_GAME_PROC",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_WINDOW_PROCESS_GAME_PROC"
        }
      }
    },
    "Window_ProcessGameProc_HighMessageDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4449588,
            "rva": 255284,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 361,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4454852,
            "rva": 260548,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 361,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4454820,
            "rva": 260516,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 361,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 361,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Window_ProcessGameProc",
          "instr_offset": 361,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Four-entry uint32_t jump table used by Window_ProcessGameProc for Win32 messages 0x101..0x112, including WM_KEYUP, system key messages, and WM_SYSCOMMAND filtering.",
        "sdk": {
          "id": 61,
          "symbol_index": 61,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_HighMessageDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_HIGH_MESSAGE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_HIGH_MESSAGE_DISPATCH_TABLE"
        }
      }
    },
    "Window_ProcessGameProc_HighMessageIndexTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4449604,
            "rva": 255300,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4454868,
            "rva": 260564,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4454836,
            "rva": 260532,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 355,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Window_ProcessGameProc",
          "instr_offset": 355,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Uint8_t lookup table mapping sparse high Win32 message IDs 0x101..0x112 to window_high_message_dispatch_table slots.",
        "sdk": {
          "id": 62,
          "symbol_index": 62,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_HighMessageIndexTable",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_HIGH_MESSAGE_INDEX_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_HIGH_MESSAGE_INDEX_TABLE"
        }
      }
    },
    "Window_ProcessGameProc_Initialized": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506764,
            "rva": 2312460,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518028,
            "rva": 2323724,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517452,
            "rva": 2323148,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 95,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 95,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Window_ProcessGameProc",
          "instr_offset": 95,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Non-zero after the main game window and runtime initialization have completed.",
        "sdk": {
          "id": 1,
          "symbol_index": 1,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_Initialized",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_INITIALIZED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_INITIALIZED"
        }
      }
    },
    "Window_ProcessGameProc_LowMessageDispatchTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4449556,
            "rva": 255252,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 64,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4454820,
            "rva": 260516,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 64,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4454788,
            "rva": 260484,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 64,
                "addr_offset": 3,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 64,
            "addr_offset": 3,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Window_ProcessGameProc",
          "instr_offset": 64,
          "addr_offset": 3,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Four-entry uint32_t jump table used by Window_ProcessGameProc for sparse low Win32 messages 0x02..0x10, including destroy/size/close handling; WM_KEYDOWN (0x100) is handled by a direct branch.",
        "sdk": {
          "id": 59,
          "symbol_index": 59,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_LowMessageDispatchTable",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_LOW_MESSAGE_DISPATCH_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_LOW_MESSAGE_DISPATCH_TABLE"
        }
      }
    },
    "Window_ProcessGameProc_LowMessageIndexTable": {
      "data": {
        "analysis": {
          "en": {
            "address": 4449572,
            "rva": 255268,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4454836,
            "rva": 260532,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4454804,
            "rva": 260500,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 58,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 58,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "type": "uint8_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Window_ProcessGameProc",
          "instr_offset": 58,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "read_only",
        "docs": "Uint8_t lookup table mapping Win32 message IDs 0x02..0x10 to window_low_message_dispatch_table slots.",
        "sdk": {
          "id": 60,
          "symbol_index": 60,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_LowMessageIndexTable",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_LOW_MESSAGE_INDEX_TABLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_LOW_MESSAGE_INDEX_TABLE"
        }
      }
    },
    "Window_ProcessGameProc_MessageState": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835632,
            "rva": 641328,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 16,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844528,
            "rva": 650224,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 16,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844512,
            "rva": 650208,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 16,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 16,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 677,
          "symbol_index": 677,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_MessageState",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_MESSAGE_STATE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_MESSAGE_STATE"
        }
      }
    },
    "Window_ProcessGameProc_ShutdownBegin": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528312,
            "rva": 334008,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536508,
            "rva": 342204,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536508,
            "rva": 342204,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 73,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 73,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 291,
          "symbol_index": 291,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_ShutdownBegin",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_BEGIN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_BEGIN"
        }
      }
    },
    "Window_ProcessGameProc_ShutdownComplete": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528176,
            "rva": 333872,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 258,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536372,
            "rva": 342068,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 258,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536372,
            "rva": 342068,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 258,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 258,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 284,
          "symbol_index": 284,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_ShutdownComplete",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_COMPLETE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_COMPLETE"
        }
      }
    },
    "Window_ProcessGameProc_ShutdownDestroyWindow": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528220,
            "rva": 333916,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536416,
            "rva": 342112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536416,
            "rva": 342112,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 207,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 207,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 285,
          "symbol_index": 285,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_ShutdownDestroyWindow",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_DESTROY_WINDOW",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_DESTROY_WINDOW"
        }
      }
    },
    "Window_ProcessGameProc_ShutdownDirectInputRelease": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528248,
            "rva": 333944,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536444,
            "rva": 342140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536444,
            "rva": 342140,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 156,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 156,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 287,
          "symbol_index": 287,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_ShutdownDirectInputRelease",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_DIRECT_INPUT_RELEASE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_DIRECT_INPUT_RELEASE"
        }
      }
    },
    "Window_ProcessGameProc_ShutdownKillGame": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528268,
            "rva": 333964,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536464,
            "rva": 342160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536464,
            "rva": 342160,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 136,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 136,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 288,
          "symbol_index": 288,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_ShutdownKillGame",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_KILL_GAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_KILL_GAME"
        }
      }
    },
    "Window_ProcessGameProc_ShutdownUninitGame": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528236,
            "rva": 333932,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536432,
            "rva": 342128,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536432,
            "rva": 342128,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 173,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 173,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 286,
          "symbol_index": 286,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_ShutdownUninitGame",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_UNINIT_GAME",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_UNINIT_GAME"
        }
      }
    },
    "Window_ProcessGameProc_ShutdownUninitGameInterface": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528280,
            "rva": 333976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536476,
            "rva": 342172,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536476,
            "rva": 342172,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 119,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 119,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 289,
          "symbol_index": 289,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_ShutdownUninitGameInterface",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_UNINIT_GAME_INTERFACE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_UNINIT_GAME_INTERFACE"
        }
      }
    },
    "Window_ProcessGameProc_ShutdownUnloadData": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528300,
            "rva": 333996,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536496,
            "rva": 342192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536496,
            "rva": 342192,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_ProcessGameProc"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_ProcessGameProc"
            },
            "instr_offset": 85,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 290,
          "symbol_index": 290,
          "accessor": "DTTR_PCDOGS_D_Window_ProcessGameProc_ShutdownUnloadData",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_UNLOAD_DATA",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_PROCESS_GAME_PROC_SHUTDOWN_UNLOAD_DATA"
        }
      }
    },
    "Window_RequestClose": {
      "function": {
        "analysis": {
          "en": {
            "address": 4450448,
            "rva": 256144,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Menu_ProcessMenuTransition"
                },
                "instr_offset": 180,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_UpdateAndRenderScreen"
                },
                "instr_offset": 295,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4455728,
            "rva": 261424,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 387,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4455696,
            "rva": 261392,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 223,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "PKG_CleanupResourceGameState"
                },
                "instr_offset": 254,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Title_CleanupScreenResources"
                },
                "instr_offset": 381,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Video_PlayMovieFile"
                },
                "instr_offset": 85,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 387,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "51 8D 44 24 00 6A 00 50 6A 00 6A 61 FF 15 ??",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 5,
          "entry_patch_size": 5
        },
        "sdk": {
          "id": 531,
          "symbol_index": 531,
          "accessor": "DTTR_PCDOGS_F_Window_RequestClose",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_WINDOW_REQUEST_CLOSE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_WINDOW_REQUEST_CLOSE"
        }
      }
    },
    "Window_RunWinMain": {
      "function": {
        "analysis": {
          "en": {
            "address": 4449680,
            "rva": 255376,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_GameTitle102Dalmatians"
                },
                "instr_offset": 82,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_InstanceHandle"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_RenderingEnabled"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_RequiresNT"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_SecondaryWindowHandle"
                },
                "instr_offset": 315,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_ShowCmd"
                },
                "instr_offset": 396,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_LoadAlternateFromINI"
                },
                "instr_offset": 553,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Display_IsActive"
                },
                "instr_offset": 610,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 545,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 402,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 634,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 648,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 579,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 690,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_InitializeResourceGameEngine"
                },
                "instr_offset": 383,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_InitializeSystem"
                },
                "instr_offset": 529,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 422,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 446,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 466,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 486,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_SetResolution"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4454944,
            "rva": 260640,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_GameTitle102Dalmatians"
                },
                "instr_offset": 82,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_InstanceHandle"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_RenderingEnabled"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_RequiresNT"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_SecondaryWindowHandle"
                },
                "instr_offset": 315,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_ShowCmd"
                },
                "instr_offset": 396,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_LoadAlternateFromINI"
                },
                "instr_offset": 562,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Display_IsActive"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 554,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 411,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 657,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 588,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_InitializeResourceGameEngine"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_InitializeSystemMultiLanguage"
                },
                "instr_offset": 538,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 431,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_SetResolution"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4454912,
            "rva": 260608,
            "image_base": 4194304,
            "xrefs_to": [
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_GameTitle102Dalmatians"
                },
                "instr_offset": 82,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_InstanceHandle"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_RenderingEnabled"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_RequiresNT"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_SecondaryWindowHandle"
                },
                "instr_offset": 315,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "data",
                  "name": "Window_RunWinMain_ShowCmd"
                },
                "instr_offset": 396,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Config_LoadAlternateFromINI"
                },
                "instr_offset": 562,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Display_IsActive"
                },
                "instr_offset": 619,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Display_SetMode"
                },
                "instr_offset": 554,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Graphics_RenderFrame"
                },
                "instr_offset": 628,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_InitializeInputSubsystem"
                },
                "instr_offset": 411,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 643,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_IsKeyPressed"
                },
                "instr_offset": 657,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 588,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Input_ProcessWindowMessages"
                },
                "instr_offset": 699,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_FindAndOpenFile"
                },
                "instr_offset": 378,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_InitializeResourceGameEngine"
                },
                "instr_offset": 392,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "PKG_InitializeSystemMultiLanguage"
                },
                "instr_offset": 538,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 431,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 455,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 475,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Video_PlayMovieIntro"
                },
                "instr_offset": 495,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_RequestClose"
                },
                "instr_offset": 387,
                "addr_offset": 1,
                "indirections": 0
              },
              {
                "target": {
                  "kind": "function",
                  "name": "Window_SetResolution"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              }
            ],
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Mem_FreeCRT"
                },
                "instr_offset": 772,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "int32_t",
          "params": [
            {
              "name": "h_instance",
              "type": "HINSTANCE"
            },
            {
              "name": "h_prev_instance",
              "type": "HINSTANCE"
            },
            {
              "name": "lp_cmd_line",
              "type": "LPSTR"
            },
            {
              "name": "n_cmd_show",
              "type": "int32_t"
            }
          ],
          "calling_convention": "stdcall",
          "abi_status": "verified"
        },
        "xrefs_to": [
          {
            "target": {
              "kind": "data",
              "name": "Window_RunWinMain_SecondaryWindowHandle"
            },
            "instr_offset": 315,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_RunWinMain_RenderingEnabled"
            },
            "instr_offset": 355,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_RunWinMain_GameTitle102Dalmatians"
            },
            "instr_offset": 82,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_RunWinMain_RequiresNT"
            },
            "instr_offset": 117,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_RunWinMain_InstanceHandle"
            },
            "instr_offset": 540,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          },
          {
            "target": {
              "kind": "data",
              "name": "Window_RunWinMain_ShowCmd"
            },
            "instr_offset": 396,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "3C 89 5C 24 40 FF 15 ??",
          "match_offset": -39
        },
        "docs": "Native WinMain body that creates the main window, initializes startup state, and runs the game message/render loop.",
        "hook": {
          "kind": "rel32",
          "patch_size": 8,
          "entry_patch_size": 8
        },
        "sdk": {
          "id": 19,
          "symbol_index": 19,
          "accessor": "DTTR_PCDOGS_F_Window_RunWinMain",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_WINDOW_RUN_WIN_MAIN",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_WINDOW_RUN_WIN_MAIN"
        }
      }
    },
    "Window_RunWinMain_GameTitle102Dalmatians": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528084,
            "rva": 333780,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 82,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536280,
            "rva": 341976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 82,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536280,
            "rva": 341976,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 82,
                "addr_offset": 4,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_RunWinMain"
            },
            "instr_offset": 82,
            "addr_offset": 4,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 280,
          "symbol_index": 280,
          "accessor": "DTTR_PCDOGS_D_Window_RunWinMain_GameTitle102Dalmatians",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_RUN_WIN_MAIN_GAME_TITLE102_DALMATIANS",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_RUN_WIN_MAIN_GAME_TITLE102_DALMATIANS"
        }
      }
    },
    "Window_RunWinMain_InstanceHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506760,
            "rva": 2312456,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 278986752,
            "rva": 274792448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 3500212224,
            "rva": 3496017920,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 540,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_RunWinMain"
            },
            "instr_offset": 540,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 770,
          "symbol_index": 770,
          "accessor": "DTTR_PCDOGS_D_Window_RunWinMain_InstanceHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_RUN_WIN_MAIN_INSTANCE_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_RUN_WIN_MAIN_INSTANCE_HANDLE"
        }
      }
    },
    "Window_RunWinMain_RenderingEnabled": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506752,
            "rva": 2312448,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 6518016,
            "rva": 2323712,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 6517440,
            "rva": 2323136,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 355,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_RunWinMain"
            },
            "instr_offset": 355,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "int32_t",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Window_RunWinMain",
          "instr_offset": 355,
          "addr_offset": 2,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Flag checked by game rendering paths before drawing world content.",
        "sdk": {
          "id": 5,
          "symbol_index": 5,
          "accessor": "DTTR_PCDOGS_D_Window_RunWinMain_RenderingEnabled",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_RUN_WIN_MAIN_RENDERING_ENABLED",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_RUN_WIN_MAIN_RENDERING_ENABLED"
        }
      }
    },
    "Window_RunWinMain_RequiresNT": {
      "data": {
        "analysis": {
          "en": {
            "address": 4528356,
            "rva": 334052,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4536552,
            "rva": 342248,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4536552,
            "rva": 342248,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 117,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_RunWinMain"
            },
            "instr_offset": 117,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 292,
          "symbol_index": 292,
          "accessor": "DTTR_PCDOGS_D_Window_RunWinMain_RequiresNT",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_RUN_WIN_MAIN_REQUIRES_NT",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_RUN_WIN_MAIN_REQUIRES_NT"
        }
      }
    },
    "Window_RunWinMain_SecondaryWindowHandle": {
      "data": {
        "analysis": {
          "en": {
            "address": 4835904,
            "rva": 641600,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 315,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 4844800,
            "rva": 650496,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 315,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 4844784,
            "rva": 650480,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 315,
                "addr_offset": 1,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_RunWinMain"
            },
            "instr_offset": 315,
            "addr_offset": 1,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": false,
        "type": "HWND",
        "resolver": {
          "kind": "xref_u32",
          "ref_function": "Window_RunWinMain",
          "instr_offset": 315,
          "addr_offset": 1,
          "indirections": 0
        },
        "write_policy": "raw_memory",
        "docs": "Write-only secondary copy of the HWND returned by CreateWindowExA in Window_RunWinMain; main_window_handle is the runtime window handle read by input/movie/DirectDraw paths.",
        "sdk": {
          "id": 4,
          "symbol_index": 4,
          "accessor": "DTTR_PCDOGS_D_Window_RunWinMain_SecondaryWindowHandle",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_RUN_WIN_MAIN_SECONDARY_WINDOW_HANDLE",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_RUN_WIN_MAIN_SECONDARY_WINDOW_HANDLE"
        }
      }
    },
    "Window_RunWinMain_SecondaryWindowHandleAnchor": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4449995,
            "rva": 255691,
            "image_base": 4194304
          },
          "eu": {
            "address": 4455259,
            "rva": 260955,
            "image_base": 4194304
          },
          "sc": {
            "address": 4455227,
            "rva": 260923,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "A3 ?? ?? ?? ?? FF D7"
      }
    },
    "Window_RunWinMain_ShowCmd": {
      "data": {
        "analysis": {
          "en": {
            "address": 6506780,
            "rva": 2312476,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 396,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "eu": {
            "address": 1668616213,
            "rva": 1664421909,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 396,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          },
          "sc": {
            "address": 1668468757,
            "rva": 1664274453,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 396,
                "addr_offset": 2,
                "indirections": 0,
                "access": "R/W"
              }
            ]
          }
        },
        "xrefs_from": [
          {
            "source": {
              "kind": "function",
              "name": "Window_RunWinMain"
            },
            "instr_offset": 396,
            "addr_offset": 2,
            "indirections": 0,
            "builds": [
              "en",
              "eu",
              "sc"
            ],
            "access": "R/W"
          }
        ],
        "unstable": true,
        "write_policy": "unknown",
        "sdk": {
          "id": 773,
          "symbol_index": 773,
          "accessor": "DTTR_PCDOGS_D_Window_RunWinMain_ShowCmd",
          "sdk_id": "DTTR_PCDOGS_DATA_WINDOW_RUN_WIN_MAIN_SHOW_CMD",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_DATA_ID_WINDOW_RUN_WIN_MAIN_SHOW_CMD"
        }
      }
    },
    "Window_SetResolution": {
      "function": {
        "analysis": {
          "en": {
            "address": 4477184,
            "rva": 282880,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "eu": {
            "address": 4485024,
            "rva": 290720,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          },
          "sc": {
            "address": 4484800,
            "rva": 290496,
            "image_base": 4194304,
            "xrefs_from": [
              {
                "source": {
                  "kind": "function",
                  "name": "Window_RunWinMain"
                },
                "instr_offset": 185,
                "addr_offset": 1,
                "indirections": 0
              }
            ]
          }
        },
        "prototype": {
          "return_type": "void",
          "params": [],
          "calling_convention": "cdecl",
          "abi_status": "verified"
        },
        "unstable": true,
        "callable": true,
        "resolver": {
          "kind": "aob",
          "pattern": "C7 05 ?? ?? ?? ?? 80 02",
          "match_offset": 0
        },
        "hook": {
          "kind": "rel32",
          "patch_size": 10,
          "entry_patch_size": 10
        },
        "sdk": {
          "id": 637,
          "symbol_index": 637,
          "accessor": "DTTR_PCDOGS_F_Window_SetResolution",
          "sdk_id": "DTTR_PCDOGS_FUNCTION_WINDOW_SET_RESOLUTION",
          "symbol_id": "DTTR_PCDOGS_SYMBOL_FUNCTION_ID_WINDOW_SET_RESOLUTION"
        }
      }
    },
    "Window_ShouldQuitAnchor": {
      "signature": {
        "analysis": {
          "en": {
            "address": 4450274,
            "rva": 255970,
            "image_base": 4194304
          },
          "eu": {
            "address": 4455547,
            "rva": 261243,
            "image_base": 4194304
          },
          "sc": {
            "address": 4455515,
            "rva": 261211,
            "image_base": 4194304
          }
        },
        "unstable": true,
        "pattern": "39 35 ?? ?? ?? ?? 75 ?? 39 35"
      }
    }
  }
}
